diff options
| author | volzhs | 2017-02-08 10:40:35 +0900 |
|---|---|---|
| committer | volzhs | 2017-02-18 00:20:05 +0900 |
| commit | b8e58b2b7b8a230411227eb0a75192cb83856de2 (patch) | |
| tree | ff3f9d79f9648888b773a236aae1f0660fa3148f /core/ustring.cpp | |
| parent | 903a3aa5f0e128abb1fb752c10b343b34af8f799 (diff) | |
| download | godot-b8e58b2b7b8a230411227eb0a75192cb83856de2.tar.gz godot-b8e58b2b7b8a230411227eb0a75192cb83856de2.tar.zst godot-b8e58b2b7b8a230411227eb0a75192cb83856de2.zip | |
Fix zero padding formatting
Diffstat (limited to 'core/ustring.cpp')
| -rw-r--r-- | core/ustring.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/core/ustring.cpp b/core/ustring.cpp index a0d26ea0a..8b5efd25a 100644 --- a/core/ustring.cpp +++ b/core/ustring.cpp @@ -4069,12 +4069,8 @@ String String::sprintf(const Array& values, bool* error) const { case 'X': base = 16; capitalize = true; break; } // Get basic number. - String str = String::num_int64(value, base, capitalize); - - // Sign. - if (show_sign && value >= 0) { - str = str.insert(0, "+"); - } + String str = String::num_int64(ABS(value), base, capitalize); + int number_len = str.length(); // Padding. String pad_char = pad_with_zeroes ? String("0") : String(" "); @@ -4084,6 +4080,13 @@ String String::sprintf(const Array& values, bool* error) const { str = str.lpad(min_chars, pad_char); } + // Sign. + if (show_sign && value >= 0) { + str = str.insert(pad_with_zeroes?0:str.length()-number_len, "+"); + } else if (value < 0) { + str = str.insert(pad_with_zeroes?0:str.length()-number_len, "-"); + } + formatted += str; ++value_index; in_format = false; |
