diff --git a/include/fast_float/parse_number.h b/include/fast_float/parse_number.h index a011a8c..1c8afa4 100644 --- a/include/fast_float/parse_number.h +++ b/include/fast_float/parse_number.h @@ -202,10 +202,10 @@ from_chars_result_t from_chars_advanced(UC const * first, UC const * last, // We do not have that fegetround() == FE_TONEAREST. // Next is a modified Clinger's fast path, inspired by Jakub JelĂ­nek's proposal if (pns.exponent >= 0 && pns.mantissa <=binary_format::max_mantissa_fast_path(pns.exponent)) { -#if defined(__clang__) +#if defined(__clang__) || defined(FASTFLOAT_32BIT) // Clang may map 0 to -0.0 when fegetround() == FE_DOWNWARD if(pns.mantissa == 0) { - value = pns.negative ? -0. : 0.; + value = pns.negative ? T(-0.) : T(0.); return answer; } #endif