diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-number-prototype.c b/jerry-core/ecma/builtin-objects/ecma-builtin-number-prototype.c index c024e0e7c..e5ba6b018 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-number-prototype.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-number-prototype.c @@ -153,8 +153,8 @@ ecma_builtin_number_prototype_helper_round (lit_utf8_byte_t *digits_p, /**< [in, int i = 1; - /* Handle curry number. */ - for (; i < (int) num_digits; i++) + /* Handle carry number. */ + for (; i <= round_num; i++) { if (++digits_p[round_num - i] <= '9') { @@ -164,7 +164,7 @@ ecma_builtin_number_prototype_helper_round (lit_utf8_byte_t *digits_p, /**< [in, } /* Prepend highest digit */ - if (i >= (int) num_digits) + if (i > round_num) { memmove (digits_p + 1, digits_p, num_digits); digits_p[0] = '1'; diff --git a/tests/jerry/number-prototype-to-precision.js b/tests/jerry/number-prototype-to-precision.js index 6184e1722..10b774092 100644 --- a/tests/jerry/number-prototype-to-precision.js +++ b/tests/jerry/number-prototype-to-precision.js @@ -36,6 +36,11 @@ assert((123456789012345678901.0).toPrecision("6") === "1.23457e+20"); assert((123.56).toPrecision(1.3) === "1e+2"); assert((123.56).toPrecision(21.9) === "123.560000000000000000"); +assert(Number(982).toPrecision(1) === "1e+3"); +assert(Number(982).toPrecision(2) === "9.8e+2"); +assert(Number(1499).toPrecision(1) === "1e+3"); +assert(Number(1500).toPrecision(1) === "2e+3"); + try { (12).toPrecision(0); assert(false);