Merge 803e82e2f95d7ea3aef12cd652eea2310d7c9fb8 into 8c4ed3bc3423f56d907e80ab4dc42dab1267afc3

This commit is contained in:
Steve Chen 2026-06-17 05:46:50 +00:00 committed by GitHub
commit cee3228c61
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 17 additions and 14 deletions

View File

@ -53,21 +53,20 @@ void c11_sbuf__write_f64(c11_sbuf* self, double val, int precision) {
char b[32];
int size;
if(precision < 0) {
int prec = 17 - 1; // std::numeric_limits<double>::max_digits10 == 17
size = snprintf(b, sizeof(b), "%.*g", prec, val);
} else {
int prec = precision;
size = snprintf(b, sizeof(b), "%.*f", prec, val);
}
c11_sbuf__write_cstr(self, b);
bool all_is_digit = true;
for(int i = 1; i < size; i++) {
if(!isdigit(b[i])) {
all_is_digit = false;
break;
size = snprintf(b, sizeof(b), "%.17g", val);
c11_sbuf__write_cstr(self, b);
bool all_is_digit = true;
for(int i = 1; i < size; i++) {
if(!isdigit((unsigned char)b[i])) {
all_is_digit = false;
break;
}
}
if(all_is_digit) c11_sbuf__write_cstr(self, ".0");
} else {
size = snprintf(b, sizeof(b), "%.*f", precision, val);
c11_sbuf__write_cstr(self, b);
}
if(all_is_digit) c11_sbuf__write_cstr(self, ".0");
}
void c11_sbuf__write_sv(c11_sbuf* self, c11_sv sv) {

View File

@ -102,7 +102,7 @@ static bool json__write_namedict_kv(py_Name k, py_Ref v, void* ctx_) {
static bool json__write_object(c11_sbuf* buf, py_TValue* obj, int indent, int depth) {
switch(obj->type) {
case tp_NoneType: c11_sbuf__write_cstr(buf, "null"); return true;
case tp_int: c11_sbuf__write_int(buf, obj->_i64); return true;
case tp_int: c11_sbuf__write_i64(buf, obj->_i64); return true;
case tp_float: {
if(dmath_isnan(obj->_f64)) {
c11_sbuf__write_cstr(buf, "NaN");

View File

@ -64,6 +64,7 @@ assert f'{a:010f}' == '010.000000'
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'
b = '123'
assert f'{b:10}' == '123 '

View File

@ -48,6 +48,9 @@ _j = json.dumps(c)
_c = json.loads(_j)
assert c == _c
assert json.dumps(9223372036854775807) == '9223372036854775807'
assert json.loads(json.dumps(0.1 + 0.2)) == 0.1 + 0.2
d = True
_j = json.dumps(d)
_d = json.loads(_j)