Skip to content

Commit c198502

Browse files
committed
toFixed : should return toString from numbers >=abs(10^21)
We were doing that for positive value but missed that for negative value - fixed it.
1 parent f754b42 commit c198502

File tree

3 files changed

+25
-1
lines changed

3 files changed

+25
-1
lines changed

lib/Runtime/Library/JavascriptNumber.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -673,7 +673,7 @@ namespace Js
673673
{
674674
return ToStringNan(scriptContext);
675675
}
676-
if(value >= 1e21)
676+
if(value >= 1e21 || value <= -1e21)
677677
{
678678
return ToStringRadix10(value, scriptContext);
679679
}

test/Number/toString.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ runTest('new Number(0)');
1111
runTest('0.9999999999999999e21');
1212
runTest('1e21');
1313
runTest('1.0000000000000001e21');
14+
runTest('-1.0000000000000001e21');
1415

1516
function runTest(numberToTestAsString)
1617
{

test/Number/toString_3.baseline

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,3 +182,26 @@ n.toPrecision(2): 1.0e+21
182182
n.toPrecision(5): 1.0000e+21
183183
n.toPrecision(20): 1.0000000000000001000e+21
184184

185+
Test: -1.0000000000000001e21
186+
n.toString(): -1.0000000000000001e+21
187+
n.toString(10): -1.0000000000000001e+21
188+
n.toString(8): -154327115334273650400000
189+
n.toString(2): -1101100011010111001001101011011100010111011110101000100000000000000000
190+
n.toString(16): -3635c9adc5dea20000
191+
n.toString(25): -11l25a0000007fbb
192+
n.toFixed(): -1.0000000000000001e+21
193+
n.toFixed(0): -1.0000000000000001e+21
194+
n.toFixed(2): -1.0000000000000001e+21
195+
n.toFixed(5): -1.0000000000000001e+21
196+
n.toFixed(20): -1.0000000000000001e+21
197+
RangeError: The number of fractional digits is out of range
198+
RangeError: The number of fractional digits is out of range
199+
n.toExponential(): -1.0000000000000001e+21
200+
n.toExponential(undefined): -1.0000000000000001e+21
201+
n.toExponential(2): -1.00e+21
202+
n.toExponential(5): -1.00000e+21
203+
n.toPrecision(): -1.0000000000000001e+21
204+
n.toPrecision(2): -1.0e+21
205+
n.toPrecision(5): -1.0000e+21
206+
n.toPrecision(20): -1.0000000000000001000e+21
207+

0 commit comments

Comments
 (0)