mirror of
https://github.com/RustPython/RustPython.git
synced 2026-10-29 03:04:38 +08:00
Formatting with width and separator doesn't work correctly (#5927)
* Fix add_magnitude_separators * Add extra tests
This commit is contained in:
2 files changed
+12
-2
No files matched your search
@@ -436,8 +436,12 @@ impl FormatSpec {
|
||||
let sep = char::from(fg);
|
||||
let inter = self.get_separator_interval().try_into().unwrap();
|
||||
let magnitude_len = magnitude_str.len();
|
||||
let width = self.width.unwrap_or(magnitude_len) as i32 - prefix.len() as i32;
|
||||
let disp_digit_cnt = cmp::max(width, magnitude_len as i32);
|
||||
let disp_digit_cnt = if self.fill == Some('0'.into()) {
|
||||
let width = self.width.unwrap_or(magnitude_len) as i32 - prefix.len() as i32;
|
||||
cmp::max(width, magnitude_len as i32)
|
||||
} else {
|
||||
magnitude_len as i32
|
||||
};
|
||||
Self::add_magnitude_separators_for_char(magnitude_str, inter, sep, disp_digit_cnt)
|
||||
}
|
||||
None => magnitude_str,
|
||||
|
||||
@@ -81,6 +81,9 @@ assert f"{123.456:011,}" == "000,123.456"
|
||||
assert f"{123.456:+011,}" == "+00,123.456"
|
||||
assert f"{1234:.3g}" == "1.23e+03"
|
||||
assert f"{1234567:.6G}" == "1.23457E+06"
|
||||
assert f"{1234:10}" == " 1234"
|
||||
assert f"{1234:10,}" == " 1,234"
|
||||
assert f"{1234:010,}" == "00,001,234"
|
||||
assert f"{'🐍':4}" == "🐍 "
|
||||
assert_raises(
|
||||
ValueError, "{:,o}".format, 1, _msg="ValueError: Cannot specify ',' with 'o'."
|
||||
@@ -165,6 +168,9 @@ assert f"{3.1415:#.1}" == "3.e+00"
|
||||
assert f"{3.1415:#.2}" == "3.1"
|
||||
assert f"{3.1415:#.3}" == "3.14"
|
||||
assert f"{3.1415:#.4}" == "3.142"
|
||||
assert f"{1234.5:10}" == " 1234.5"
|
||||
assert f"{1234.5:10,}" == " 1,234.5"
|
||||
assert f"{1234.5:010,}" == "0,001,234.5"
|
||||
assert f"{12.34 + 5.6j}" == "(12.34+5.6j)"
|
||||
assert f"{12.34 - 5.6j: }" == "( 12.34-5.6j)"
|
||||
assert f"{12.34 + 5.6j:20}" == " (12.34+5.6j)"
|
||||
|
||||
Reference in new issue
Block a user