fix cases

This commit is contained in:
blueloveTH 2026-06-18 10:41:57 +08:00
parent 6d2c0d0881
commit 539f780003
2 changed files with 11 additions and 4 deletions

View File

@ -54,9 +54,9 @@ void c11_sbuf__write_f64(c11_sbuf* self, double val, int precision) {
char b[32];
int size;
if(precision < 0) {
size = snprintf(b, sizeof(b), "%.*g", 15, val);
if(strtod(b, NULL) != val) {
size = snprintf(b, sizeof(b), "%.*g", 17, val);
for(int g = 15; g <= 17; g++) {
size = snprintf(b, sizeof(b), "%.*g", g, val);
if(strtod(b, NULL) == val) break;
}
c11_sbuf__write_cstr(self, b);
bool all_is_digit = true;

View File

@ -65,6 +65,7 @@ assert f'{a:010.2f}' == '0000010.00'
assert f'{a:.2f}' == '10.00'
assert f'{a:.5f}' == '10.00000'
assert f'{2.5:.0f}' == '2'
assert '{:.0f}'.format(2.5) == '2'
b = '123'
assert f'{b:10}' == '123 '
@ -140,4 +141,10 @@ assert f'{A():10}' == 'A '
assert f'{A():10}' == 'A '
a = ['1', '2', '3']
assert f'a = {'\n'.join(a)}' == 'a = 1\n2\n3'
assert f'a = {'\n'.join(a)}' == 'a = 1\n2\n3'
assert str(0.1+0.2) == '0.30000000000000004'
assert str(1/2) == '0.5'
assert str(1/3) == '0.3333333333333333'
assert str(1/4) == '0.25'
assert str(1/7) == '0.14285714285714285'