lib/fmt,strconv: char-literals for fmt/ftos magic decimals (Wave-1)
This commit is contained in:
@@ -2006,13 +2006,13 @@ fn encode_f_dec(d: *decimal, buf: []u8, out: i32) i32 = {
|
||||
let i: i32 = lo;
|
||||
for (i < hi) {
|
||||
if (i == d.dp) {
|
||||
buf[o] = 46u8; // '.'
|
||||
buf[o] = '.';
|
||||
o += 1i32;
|
||||
};
|
||||
if (0i32 <= i && i < (d.nd: i32)) {
|
||||
buf[o] = (d.digits[i] + 48u8): u8;
|
||||
} else {
|
||||
buf[o] = 48u8; // '0'
|
||||
buf[o] = '0';
|
||||
};
|
||||
o += 1i32;
|
||||
i += 1i32;
|
||||
@@ -2028,7 +2028,7 @@ fn encode_e_dec(d: *decimal, buf: []u8, out: i32) i32 = {
|
||||
buf[o] = (d.digits[0] + 48u8): u8;
|
||||
o += 1i32;
|
||||
if ((d.nd: i32) > 1i32) {
|
||||
buf[o] = 46u8; // '.'
|
||||
buf[o] = '.';
|
||||
o += 1i32;
|
||||
};
|
||||
let i: size = (1u64: size);
|
||||
@@ -2037,12 +2037,12 @@ fn encode_e_dec(d: *decimal, buf: []u8, out: i32) i32 = {
|
||||
o += 1i32;
|
||||
i += (1u64: size);
|
||||
};
|
||||
buf[o] = 101u8; // 'e'
|
||||
buf[o] = 'e';
|
||||
o += 1i32;
|
||||
let e: i32 = d.dp - 1i32;
|
||||
if (e < 0i32) {
|
||||
e = -e;
|
||||
buf[o] = 45u8; // '-'
|
||||
buf[o] = '-';
|
||||
o += 1i32;
|
||||
};
|
||||
// Hoisted uint casts (ww parser rejects `(N: uint)` inside `[ ]`).
|
||||
@@ -2095,7 +2095,7 @@ export fn f64tos(n: f64) str = {
|
||||
return r;
|
||||
};
|
||||
if (sign) {
|
||||
f64tos_buf[o] = 45u8; // '-'
|
||||
f64tos_buf[o] = '-';
|
||||
o += 1i32;
|
||||
};
|
||||
if (special) {
|
||||
@@ -2104,7 +2104,7 @@ export fn f64tos(n: f64) str = {
|
||||
return r;
|
||||
};
|
||||
if (exponent == 0u32 && mantissa == 0u64) {
|
||||
f64tos_buf[o] = 48u8; // '0' (encode_zero, G/void/NONE)
|
||||
f64tos_buf[o] = '0'; // encode_zero, G/void/NONE
|
||||
o += 1i32;
|
||||
r.len = o;
|
||||
return r;
|
||||
@@ -2123,7 +2123,7 @@ export fn f64tos(n: f64) str = {
|
||||
// fallback (ftos.ha:365). f == G → trim (ftos.ha:386).
|
||||
trim(pd);
|
||||
if (pd.nd == (0u64: size)) {
|
||||
f64tos_buf[o] = 48u8; // rounded to zero
|
||||
f64tos_buf[o] = '0'; // rounded to zero
|
||||
o += 1i32;
|
||||
} else if (pd.dp < -1i32 || (pd.dp - (pd.nd: i32)) > 2i32) {
|
||||
o = encode_e_dec(pd, f64tos_buf[0:32], o);
|
||||
@@ -2162,7 +2162,7 @@ export fn f32tos(n: f32) str = {
|
||||
return r;
|
||||
};
|
||||
if (sign) {
|
||||
f32tos_buf[o] = 45u8; // '-'
|
||||
f32tos_buf[o] = '-';
|
||||
o += 1i32;
|
||||
};
|
||||
if (special) {
|
||||
@@ -2171,7 +2171,7 @@ export fn f32tos(n: f32) str = {
|
||||
return r;
|
||||
};
|
||||
if (exponent == 0u32 && mantissa == 0u32) {
|
||||
f32tos_buf[o] = 48u8; // '0' (encode_zero, G/void/NONE)
|
||||
f32tos_buf[o] = '0'; // encode_zero, G/void/NONE
|
||||
o += 1i32;
|
||||
r.len = o;
|
||||
return r;
|
||||
@@ -2184,7 +2184,7 @@ export fn f32tos(n: f32) str = {
|
||||
init_dec_mant_exp(pd, (dd.mantissa: u64), (dd.exponent: i32));
|
||||
trim(pd);
|
||||
if (pd.nd == (0u64: size)) {
|
||||
f32tos_buf[o] = 48u8; // rounded to zero
|
||||
f32tos_buf[o] = '0'; // rounded to zero
|
||||
o += 1i32;
|
||||
} else if (pd.dp < -1i32 || (pd.dp - (pd.nd: i32)) > 2i32) {
|
||||
o = encode_e_dec(pd, f32tos_buf[0:32], o);
|
||||
|
||||
Reference in New Issue
Block a user