Skip to content

Commit fb255ed

Browse files
committed
Numbers up to 10^21 shouldn't be displayed exponentially (Fixes #2751)
The spec section 7.1.12.1 requires that if a number's base 10 logarithm is <= 21, then it shouldn't use exponential notation when it's converted to String. This fixes #2751.
1 parent 4bf71d0 commit fb255ed

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

lib/Common/Common/NumberUtilities_strtod.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -2528,7 +2528,7 @@ BOOL Js::NumberUtilities::FNonZeroFiniteDblToStr(double dbl, _In_range_(2, 36) i
25282528
maxOutDigits = g_rgcchSig[radix];
25292529
__analysis_assume(maxOutDigits > 0);
25302530

2531-
if (wExp2 < -60 || wExp2 > 60)
2531+
if (dbl < 1e-21 || dbl > 1e+21)
25322532
{
25332533
// Use exponential notation. Get the exponent and normalize.
25342534
if (cbitDigit != 0)

test/Number/toString_3.baseline

+4-4
Original file line numberDiff line numberDiff line change
@@ -116,10 +116,10 @@ n.toPrecision(20): 0.0000000000000000000
116116
Test: 1e21
117117
n.toString(): 1e+21
118118
n.toString(10): 1e+21
119-
n.toString(8): 1.5432711533427365(e+23)
120-
n.toString(2): 1.101100011010111001001101011011100010111011110101(e+69)
121-
n.toString(16): 3.635c9adc5dea(e+17)
122-
n.toString(25): 1.1l259oooooof(e+15)
119+
n.toString(8): 154327115334273650000000
120+
n.toString(2): 1101100011010111001001101011011100010111011110101000000000000000000000
121+
n.toString(16): 3635c9adc5dea00000
122+
n.toString(25): 11l259ooooooo5ie
123123
n.toFixed(): 1e+21
124124
n.toFixed(0): 1e+21
125125
n.toFixed(2): 1e+21

0 commit comments

Comments
 (0)