diff --git a/stb_sprintf.h b/stb_sprintf.h index 630d851..24d3707 100644 --- a/stb_sprintf.h +++ b/stb_sprintf.h @@ -1696,7 +1696,7 @@ static stbsp__int32 stbsp__real_to_str(char const **start, stbsp__uint32 *len, c if (expo == 0) // is zero or denormal { - if ((bits << 1) == 0) // do zero + if (((stbsp__uint64) bits << 1) == 0) // do zero { *decimal_pos = 1; *start = out; diff --git a/tests/test_sprintf.c b/tests/test_sprintf.c index 674e2c7..207a56a 100644 --- a/tests/test_sprintf.c +++ b/tests/test_sprintf.c @@ -85,6 +85,7 @@ int main() CHECK2("0.00", "%.2f", 1e-4); CHECK2("-5.20", "%+4.2f", -5.2); CHECK2("0.0 ", "%-10.1f", 0.); + CHECK2("-0.000000", "%f", -0.); CHECK2("0.000001", "%f", 9.09834e-07); #if USE_STB // rounding differences CHECK2("38685626227668133600000000.0", "%.1f", pow_2_85);