Fix some conversions
JerryScript CI / Checks (push) Failing after 22s
JerryScript CI / Linux_x86_cpointer-32bit_Build_Correctness_Tests (push) Failing after 14s
JerryScript CI / Linux_x86-64_Build_Option_Tests (push) Failing after 15s
JerryScript CI / Conformance_Tests_ESNext (push) Failing after 10s
JerryScript CI / ASAN_Tests_Debug (push) Failing after 14s
JerryScript CI / UBSAN_Tests (push) Failing after 16s
JerryScript CI / Linux_ARMv7l_Tests (push) Failing after 14s
JerryScript CI / Linux_ARMv7l_Tests_Debug (push) Failing after 15s
JerryScript CI / Linux_AArch64_Tests (push) Failing after 14s
JerryScript CI / Linux_AArch64_Tests_Debug (push) Failing after 15s
JerryScript CI / MbedOS_K64F_Build_Test (push) Failing after 14s
JerryScript CI / ESP8266_RTOS_SDK_Build_Test (push) Failing after 22s
JerryScript CI / ESP_IDF_Build_Test (push) Failing after 1m26s
JerryScript CI / Notification (push) Has been skipped
JerryScript CI / Linux_x86-64_Build_Correctness_Debugger_Tests (push) Failing after 9s
JerryScript CI / Conformance_Tests_ESNext_Debug_A (push) Failing after 10s
JerryScript CI / Conformance_Tests_ESNext_Debug_B (push) Failing after 10s
JerryScript CI / Unit_Tests (push) Failing after 8s
JerryScript CI / Clang_Unit_Build_Option_Tests (push) Failing after 15s
JerryScript CI / ASAN_Tests (push) Failing after 15s
JerryScript CI / Zephyr_STM32F4_Build_Test (push) Failing after 14s
JerryScript CI / NuttX_STM32F4_Build_Test (push) Failing after 14s
JerryScript CI / RIOT_STM32F4_Build_Test (push) Failing after 6s
JerryScript CI / Win_x86-64_Conformance_Tests_ESNext (push) Has been cancelled
JerryScript CI / Win_x86-64_Conformance_Tests_ESNext_Debug (push) Has been cancelled
JerryScript CI / Win_x86-64_Tests-MINGW (push) Has been cancelled
JerryScript CI / Win_x86-64_Tests (push) Has been cancelled
JerryScript CI / Win_x86-64_Tests_Debug (push) Has been cancelled
JerryScript CI / OSX_x86-64_Build_Correctness_Unit_Tests (push) Has been cancelled
JerryScript CI / OSX_x86-64_Build_Correctness_Unit_Tests_Debug (push) Has been cancelled
JerryScript CI / Checks (push) Failing after 22s
JerryScript CI / Linux_x86_cpointer-32bit_Build_Correctness_Tests (push) Failing after 14s
JerryScript CI / Linux_x86-64_Build_Option_Tests (push) Failing after 15s
JerryScript CI / Conformance_Tests_ESNext (push) Failing after 10s
JerryScript CI / ASAN_Tests_Debug (push) Failing after 14s
JerryScript CI / UBSAN_Tests (push) Failing after 16s
JerryScript CI / Linux_ARMv7l_Tests (push) Failing after 14s
JerryScript CI / Linux_ARMv7l_Tests_Debug (push) Failing after 15s
JerryScript CI / Linux_AArch64_Tests (push) Failing after 14s
JerryScript CI / Linux_AArch64_Tests_Debug (push) Failing after 15s
JerryScript CI / MbedOS_K64F_Build_Test (push) Failing after 14s
JerryScript CI / ESP8266_RTOS_SDK_Build_Test (push) Failing after 22s
JerryScript CI / ESP_IDF_Build_Test (push) Failing after 1m26s
JerryScript CI / Notification (push) Has been skipped
JerryScript CI / Linux_x86-64_Build_Correctness_Debugger_Tests (push) Failing after 9s
JerryScript CI / Conformance_Tests_ESNext_Debug_A (push) Failing after 10s
JerryScript CI / Conformance_Tests_ESNext_Debug_B (push) Failing after 10s
JerryScript CI / Unit_Tests (push) Failing after 8s
JerryScript CI / Clang_Unit_Build_Option_Tests (push) Failing after 15s
JerryScript CI / ASAN_Tests (push) Failing after 15s
JerryScript CI / Zephyr_STM32F4_Build_Test (push) Failing after 14s
JerryScript CI / NuttX_STM32F4_Build_Test (push) Failing after 14s
JerryScript CI / RIOT_STM32F4_Build_Test (push) Failing after 6s
JerryScript CI / Win_x86-64_Conformance_Tests_ESNext (push) Has been cancelled
JerryScript CI / Win_x86-64_Conformance_Tests_ESNext_Debug (push) Has been cancelled
JerryScript CI / Win_x86-64_Tests-MINGW (push) Has been cancelled
JerryScript CI / Win_x86-64_Tests (push) Has been cancelled
JerryScript CI / Win_x86-64_Tests_Debug (push) Has been cancelled
JerryScript CI / OSX_x86-64_Build_Correctness_Unit_Tests (push) Has been cancelled
JerryScript CI / OSX_x86-64_Build_Correctness_Unit_Tests_Debug (push) Has been cancelled
This commit is contained in:
@@ -812,7 +812,48 @@ ecma_number_to_decimal (ecma_number_t num, /**< ecma-number */
|
|||||||
JERRY_ASSERT (!ecma_number_is_infinity (num));
|
JERRY_ASSERT (!ecma_number_is_infinity (num));
|
||||||
JERRY_ASSERT (!ecma_number_is_negative (num));
|
JERRY_ASSERT (!ecma_number_is_negative (num));
|
||||||
|
|
||||||
|
#if JERRY_NUMBER_TYPE_FLOAT64
|
||||||
return ecma_errol0_dtoa ((double) num, out_digits_p, out_decimal_exp_p);
|
return ecma_errol0_dtoa ((double) num, out_digits_p, out_decimal_exp_p);
|
||||||
|
#else /* !JERRY_NUMBER_TYPE_FLOAT64 */
|
||||||
|
/* Float32: snprintf with ECMA_NUMBER_MAX_DIGITS significant digits guarantees round-trip.
|
||||||
|
* Using %e gives "D.DDDDDDDDe±EEE" which we parse into digits + decimal exponent. */
|
||||||
|
char buf[ECMA_NUMBER_MAX_DIGITS + 16];
|
||||||
|
snprintf (buf, sizeof (buf), "%.*e", ECMA_NUMBER_MAX_DIGITS - 1, (double) num);
|
||||||
|
|
||||||
|
char *p = buf;
|
||||||
|
lit_utf8_byte_t *out_p = out_digits_p;
|
||||||
|
int32_t k = 0;
|
||||||
|
|
||||||
|
*out_p++ = (lit_utf8_byte_t) *p++; /* first significant digit */
|
||||||
|
k++;
|
||||||
|
p++; /* skip '.' */
|
||||||
|
|
||||||
|
while (*p != 'e' && *p != 'E')
|
||||||
|
{
|
||||||
|
*out_p++ = (lit_utf8_byte_t) *p++;
|
||||||
|
k++;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* strip trailing zeros */
|
||||||
|
while (k > 1 && out_digits_p[k - 1] == '0')
|
||||||
|
{
|
||||||
|
k--;
|
||||||
|
}
|
||||||
|
|
||||||
|
p++; /* skip 'e' */
|
||||||
|
int32_t exp_sign = (*p == '-') ? -1 : 1;
|
||||||
|
p++; /* skip sign */
|
||||||
|
int32_t exponent = 0;
|
||||||
|
while (*p)
|
||||||
|
{
|
||||||
|
exponent = exponent * 10 + (*p++ - '0');
|
||||||
|
}
|
||||||
|
|
||||||
|
/* decimal exponent convention: n=1 means first digit is units, n=0 means "0.d..." */
|
||||||
|
*out_decimal_exp_p = exp_sign * exponent + 1;
|
||||||
|
|
||||||
|
return (lit_utf8_size_t) k;
|
||||||
|
#endif /* JERRY_NUMBER_TYPE_FLOAT64 */
|
||||||
} /* ecma_number_to_decimal */
|
} /* ecma_number_to_decimal */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user