diff --git a/tests/snippets/builtin_format.py b/tests/snippets/builtin_format.py index 9465faa65..46b627ad5 100644 --- a/tests/snippets/builtin_format.py +++ b/tests/snippets/builtin_format.py @@ -18,3 +18,12 @@ def test_zero_padding(): assert f'{i:04d}' == '0001' test_zero_padding() + +assert '{:,}'.format(100) == '100' +assert '{:,}'.format(1024) == '1,024' +assert '{:_}'.format(65536) == '65_536' +assert '{:_}'.format(4294967296) == '4_294_967_296' +assert f'{100:_}' == '100' +assert f'{1024:_}' == '1_024' +assert f'{65536:,}' == '65,536' +assert f'{4294967296:,}' == '4,294,967,296' diff --git a/vm/src/format.rs b/vm/src/format.rs index 37b737d72..aaf5f4163 100644 --- a/vm/src/format.rs +++ b/vm/src/format.rs @@ -279,15 +279,12 @@ impl FormatSpec { separator: char, ) -> String { let mut result = String::new(); - let mut remaining: usize = magnitude_string.len() % interval; - if remaining == 0 { - remaining = interval; - } + let mut remaining: usize = magnitude_string.len(); for c in magnitude_string.chars() { result.push(c); - if remaining == 0 { + remaining -= 1; + if remaining % interval == 0 && remaining > 0 { result.push(separator); - remaining = interval; } } result