It is a workaround fix. The problem comes from the inaccuracy of the double rounding. JerryScript-DCO-1.0-Signed-off-by: Robert Sipka rsipka.uszeged@partner.samsung.com
This commit is contained in:
@@ -253,10 +253,15 @@ ecma_builtin_number_prototype_object_to_string (ecma_value_t this_arg, /**< this
|
||||
scale = -scale;
|
||||
}
|
||||
|
||||
int buff_size;
|
||||
int buff_size = 1;
|
||||
if (is_scale_negative)
|
||||
{
|
||||
buff_size = (int) floor (log (this_arg_number) / log (radix)) + 1;
|
||||
double counter = this_arg_number;
|
||||
while (counter > radix)
|
||||
{
|
||||
counter /= radix;
|
||||
buff_size++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -80,6 +80,12 @@ assert((123400).toString(34) === "34pe");
|
||||
assert((123400).toString(35) === "2upp");
|
||||
assert((123400).toString(36) === "2n7s");
|
||||
|
||||
assert ((1152921504606846600).toString([1,2,3,4].slice(1,2)) === "111111111111111111111111111111111111111111111111111010000000");
|
||||
assert ((-1152921504606846600).toString(2) === "-111111111111111111111111111111111111111111111111111010000000");
|
||||
|
||||
assert ((0x100000000000061).toString(2) === "100000000000000000000000000000000000000000000000001100000")
|
||||
assert ((-0x100000000000061).toString(16) === "-100000000000060");
|
||||
|
||||
assert((123400).toString(new Number(16)) === "1e208");
|
||||
|
||||
var digit_chars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
|
||||
|
||||
Reference in New Issue
Block a user