- Notifications
You must be signed in to change notification settings - Fork37
fix for floating point rounding issue#34
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
base:master
Are you sure you want to change the base?
Uh oh!
There was an error while loading.Please reload this page.
Conversation
coveralls commentedMay 24, 2018 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
This trips up for sufficiently large values: >for(varx=Number.EPSILON;Number.isFinite(x);x*=10)console.log(x,Math.round(x*100)/100,rnd(x,2));2.220446049250313e-160'0'2.220446049250313e-150'0'2.220446049250313e-140'0'2.220446049250313e-130'0'2.220446049250313e-120'0'2.220446049250313e-110'0'2.220446049250313e-100'0'2.220446049250313e-90'0'2.220446049250313e-80'0'2.220446049250313e-70'0'0.0000022204460492503130'0'0.000022204460492503130'0'0.00022204460492503130'0'0.0022204460492503130'0'0.022204460492503130.02'0.02'0.22204460492503130.22'0.22'2.2204460492503132.22'2.22'22.2044604925031322.2'22.2'222.0446049250313222.04'222.04'2220.4460492503132220.45'2220.45'22204.4604925031322204.46'22204.46'222044.6049250313222044.6'222044.6'2220446.0492503132220446.05'2220446.05'22204460.4925031322204460.49'22204460.49'222044604.9250313222044604.93'222044604.93'2220446049.2503132220446049.25'2220446049.25'22204460492.50312822204460492.5'22204460492.5'222044604925.03128222044604925.03'222044604925.03'2220446049250.3132220446049250.31'2220446049250.31'22204460492503.1322204460492503.13'22204460492503.13'222044604925031.28222044604925031.28'222044604925031.3'2220446049250312.82220446049250312.8'2220446049250313'2220446049250313022204460492503130'22204460492503130'222044604925031300222044604925031300'222044604925031300'22204460492503130002220446049250313000'2220446049250313000'2220446049250313000022204460492503130000'NaN'222044604925031300000222044604925031320000'NaN'2.2204460492503127e+212.2204460492503127e+21'NaN'2.2204460492503126e+222.2204460492503126e+22'NaN'2.2204460492503126e+232.2204460492503126e+23'NaN'2.2204460492503126e+242.2204460492503126e+24'NaN'2.2204460492503127e+252.2204460492503127e+25'NaN'2.220446049250313e+262.220446049250313e+26'NaN'2.2204460492503128e+272.2204460492503128e+27'NaN'2.220446049250313e+282.220446049250313e+28'NaN'2.220446049250313e+292.2204460492503126e+29'NaN'2.220446049250313e+302.220446049250313e+30'NaN'2.220446049250313e+312.220446049250313e+31'NaN'2.220446049250313e+322.220446049250313e+32'NaN'2.2204460492503133e+332.220446049250313e+33'NaN'2.2204460492503133e+342.2204460492503133e+34'NaN'2.220446049250313e+352.220446049250313e+35'NaN'2.220446049250313e+362.2204460492503134e+36'NaN'2.220446049250313e+372.220446049250313e+37'NaN'2.2204460492503133e+382.2204460492503133e+38'NaN'2.2204460492503134e+392.2204460492503137e+39'NaN'2.2204460492503133e+402.2204460492503133e+40'NaN'2.220446049250313e+412.220446049250313e+41'NaN'2.2204460492503133e+422.2204460492503133e+42'NaN'2.2204460492503133e+432.2204460492503133e+43'NaN'2.2204460492503134e+442.2204460492503134e+44'NaN'2.2204460492503133e+452.2204460492503133e+45'NaN'2.2204460492503134e+462.2204460492503134e+46'NaN'2.2204460492503136e+472.2204460492503136e+47'NaN'2.2204460492503135e+482.2204460492503135e+48'NaN'2.2204460492503136e+492.2204460492503136e+49'NaN'2.2204460492503134e+502.2204460492503134e+50'NaN'2.2204460492503134e+512.2204460492503134e+51'NaN'2.2204460492503132e+522.2204460492503132e+52'NaN'2.2204460492503132e+532.2204460492503132e+53'NaN'2.2204460492503132e+542.2204460492503132e+54'NaN'2.2204460492503132e+552.2204460492503132e+55'NaN'2.2204460492503134e+562.2204460492503134e+56'NaN'2.2204460492503134e+572.2204460492503134e+57'NaN'2.2204460492503133e+582.2204460492503133e+58'NaN'2.2204460492503134e+592.2204460492503134e+59'NaN'2.2204460492503132e+602.2204460492503132e+60'NaN'2.2204460492503133e+612.2204460492503133e+61'NaN'2.2204460492503136e+622.2204460492503136e+62'NaN'2.2204460492503134e+632.2204460492503134e+63'NaN'2.2204460492503134e+642.2204460492503134e+64'NaN'2.2204460492503134e+652.2204460492503134e+65'NaN'2.2204460492503134e+662.2204460492503134e+66'NaN'2.2204460492503134e+672.2204460492503134e+67'NaN'2.2204460492503137e+682.2204460492503137e+68'NaN'2.220446049250314e+692.220446049250314e+69'NaN'2.2204460492503137e+702.2204460492503137e+70'NaN'2.220446049250314e+712.220446049250314e+71'NaN'2.220446049250314e+722.220446049250314e+72'NaN'2.220446049250314e+732.220446049250314e+73'NaN'2.220446049250314e+742.2204460492503143e+74'NaN'2.220446049250314e+752.220446049250314e+75'NaN'2.220446049250314e+762.2204460492503138e+76'NaN'2.2204460492503142e+772.2204460492503142e+77'NaN'2.2204460492503144e+782.2204460492503144e+78'NaN'2.2204460492503144e+792.2204460492503144e+79'NaN'2.2204460492503145e+802.2204460492503145e+80'NaN'2.2204460492503145e+812.2204460492503145e+81'NaN'2.2204460492503144e+822.2204460492503144e+82'NaN'2.2204460492503144e+832.2204460492503144e+83'NaN'2.2204460492503144e+842.2204460492503144e+84'NaN'2.2204460492503144e+852.2204460492503144e+85'NaN'2.2204460492503144e+862.2204460492503144e+86'NaN'2.2204460492503144e+872.2204460492503144e+87'NaN'2.2204460492503145e+882.2204460492503145e+88'NaN'2.2204460492503146e+892.2204460492503144e+89'NaN'2.2204460492503146e+902.2204460492503146e+90'NaN'2.2204460492503145e+912.2204460492503145e+91'NaN'2.2204460492503143e+922.2204460492503143e+92'NaN'2.2204460492503144e+932.2204460492503144e+93'NaN'2.2204460492503146e+942.220446049250315e+94'NaN'2.2204460492503145e+952.2204460492503148e+95'NaN'2.2204460492503143e+962.2204460492503143e+96'NaN'2.2204460492503143e+972.2204460492503143e+97'NaN'2.2204460492503143e+982.2204460492503143e+98'NaN'2.220446049250314e+992.220446049250314e+99'NaN'2.2204460492503143e+1002.2204460492503143e+100'NaN'2.220446049250314e+1012.220446049250314e+101'NaN'2.2204460492503142e+1022.2204460492503142e+102'NaN'2.220446049250314e+1032.220446049250314e+103'NaN'2.2204460492503143e+1042.2204460492503143e+104'NaN'2.2204460492503144e+1052.2204460492503144e+105'NaN'2.2204460492503143e+1062.2204460492503143e+106'NaN'2.2204460492503143e+1072.220446049250314e+107'NaN'2.2204460492503143e+1082.2204460492503143e+108'NaN'2.220446049250314e+1092.220446049250314e+109'NaN'2.2204460492503142e+1102.2204460492503142e+110'NaN'2.2204460492503143e+1112.2204460492503143e+111'NaN'2.220446049250314e+1122.220446049250314e+112'NaN'2.220446049250314e+1132.220446049250314e+113'NaN'2.220446049250314e+1142.220446049250314e+114'NaN'2.220446049250314e+1152.220446049250314e+115'NaN'2.220446049250314e+1162.220446049250314e+116'NaN'2.2204460492503143e+1172.220446049250314e+117'NaN'2.2204460492503143e+1182.2204460492503143e+118'NaN'2.220446049250314e+1192.220446049250314e+119'NaN'2.220446049250314e+1202.2204460492503138e+120'NaN'2.220446049250314e+1212.220446049250314e+121'NaN'2.220446049250314e+1222.2204460492503135e+122'NaN'2.220446049250314e+1232.2204460492503137e+123'NaN'2.220446049250314e+1242.220446049250314e+124'NaN'2.2204460492503142e+1252.2204460492503142e+125'NaN'2.220446049250314e+1262.2204460492503144e+126'NaN'2.220446049250314e+1272.220446049250314e+127'NaN'2.2204460492503143e+1282.2204460492503143e+128'NaN'2.2204460492503143e+1292.2204460492503143e+129'NaN'2.2204460492503144e+1302.2204460492503144e+130'NaN'2.2204460492503146e+1312.2204460492503146e+131'NaN'2.2204460492503145e+1322.220446049250314e+132'NaN'2.2204460492503145e+1332.2204460492503145e+133'NaN'2.2204460492503142e+1342.2204460492503142e+134'NaN'2.220446049250314e+1352.2204460492503138e+135'NaN'2.2204460492503142e+1362.2204460492503142e+136'NaN'2.2204460492503143e+1372.2204460492503143e+137'NaN'2.220446049250314e+1382.220446049250314e+138'NaN'2.2204460492503142e+1392.2204460492503142e+139'NaN'2.2204460492503143e+1402.2204460492503143e+140'NaN'2.2204460492503144e+1412.220446049250314e+141'NaN'2.2204460492503143e+1422.2204460492503146e+142'NaN'2.2204460492503142e+1432.2204460492503142e+143'NaN'2.220446049250314e+1442.220446049250314e+144'NaN'2.2204460492503143e+1452.2204460492503143e+145'NaN'2.2204460492503143e+1462.2204460492503143e+146'NaN'2.2204460492503144e+1472.2204460492503144e+147'NaN'2.2204460492503142e+1482.220446049250314e+148'NaN'2.220446049250314e+1492.220446049250314e+149'NaN'2.220446049250314e+1502.220446049250314e+150'NaN'2.220446049250314e+1512.220446049250314e+151'NaN'2.220446049250314e+1522.220446049250314e+152'NaN'2.220446049250314e+1532.220446049250314e+153'NaN'2.220446049250314e+1542.220446049250314e+154'NaN'2.220446049250314e+1552.220446049250314e+155'NaN'2.220446049250314e+1562.220446049250314e+156'NaN'2.220446049250314e+1572.220446049250314e+157'NaN'2.220446049250314e+1582.220446049250314e+158'NaN'2.220446049250314e+1592.220446049250314e+159'NaN'2.220446049250314e+1602.220446049250314e+160'NaN'2.220446049250314e+1612.220446049250314e+161'NaN'2.220446049250314e+1622.220446049250314e+162'NaN'2.220446049250314e+1632.220446049250314e+163'NaN'2.220446049250314e+1642.220446049250314e+164'NaN'2.220446049250314e+1652.220446049250314e+165'NaN'2.2204460492503142e+1662.2204460492503145e+166'NaN'2.2204460492503143e+1672.2204460492503143e+167'NaN'2.2204460492503144e+1682.2204460492503144e+168'NaN'2.2204460492503144e+1692.220446049250314e+169'NaN'2.2204460492503144e+1702.2204460492503144e+170'NaN'2.220446049250314e+1712.220446049250314e+171'NaN'2.220446049250314e+1722.220446049250314e+172'NaN'2.2204460492503142e+1732.2204460492503142e+173'NaN'2.220446049250314e+1742.220446049250314e+174'NaN'2.2204460492503143e+1752.2204460492503143e+175'NaN'2.2204460492503143e+1762.2204460492503143e+176'NaN'2.220446049250314e+1772.220446049250314e+177'NaN'2.220446049250314e+1782.220446049250314e+178'NaN'2.220446049250314e+1792.2204460492503136e+179'NaN'2.220446049250314e+1802.220446049250314e+180'NaN'2.2204460492503137e+1812.2204460492503137e+181'NaN'2.2204460492503137e+1822.2204460492503137e+182'NaN'2.220446049250314e+1832.220446049250314e+183'NaN'2.2204460492503138e+1842.2204460492503138e+184'NaN'2.2204460492503138e+1852.2204460492503138e+185'NaN'2.220446049250314e+1862.220446049250314e+186'NaN'2.220446049250314e+1872.220446049250314e+187'NaN'2.220446049250314e+1882.220446049250314e+188'NaN'2.2204460492503139e+1892.2204460492503139e+189'NaN'2.220446049250314e+1902.220446049250314e+190'NaN'2.2204460492503138e+1912.2204460492503138e+191'NaN'2.2204460492503138e+1922.2204460492503138e+192'NaN'2.2204460492503136e+1932.2204460492503136e+193'NaN'2.2204460492503136e+1942.2204460492503136e+194'NaN'2.2204460492503135e+1952.2204460492503135e+195'NaN'2.2204460492503137e+1962.2204460492503137e+196'NaN'2.2204460492503137e+1972.2204460492503137e+197'NaN'2.2204460492503138e+1982.2204460492503138e+198'NaN'2.2204460492503137e+1992.2204460492503137e+199'NaN'2.2204460492503138e+2002.2204460492503138e+200'NaN'2.2204460492503138e+2012.2204460492503138e+201'NaN'2.2204460492503137e+2022.2204460492503137e+202'NaN'2.2204460492503137e+2032.2204460492503137e+203'NaN'2.2204460492503136e+2042.2204460492503136e+204'NaN'2.2204460492503136e+2052.2204460492503136e+205'NaN'2.2204460492503135e+2062.2204460492503135e+206'NaN'2.2204460492503135e+2072.2204460492503132e+207'NaN'2.2204460492503135e+2082.2204460492503135e+208'NaN'2.2204460492503133e+2092.2204460492503133e+209'NaN'2.2204460492503133e+2102.2204460492503133e+210'NaN'2.2204460492503133e+2112.2204460492503133e+211'NaN'2.2204460492503133e+2122.2204460492503133e+212'NaN'2.2204460492503134e+2132.220446049250313e+213'NaN'2.2204460492503133e+2142.2204460492503133e+214'NaN'2.2204460492503132e+2152.2204460492503132e+215'NaN'2.2204460492503132e+2162.2204460492503132e+216'NaN'2.220446049250313e+2172.220446049250313e+217'NaN'2.220446049250313e+2182.220446049250313e+218'NaN'2.2204460492503132e+2192.2204460492503132e+219'NaN'2.2204460492503132e+2202.2204460492503132e+220'NaN'2.2204460492503133e+2212.2204460492503133e+221'NaN'2.2204460492503132e+2222.2204460492503132e+222'NaN'2.2204460492503133e+2232.2204460492503133e+223'NaN'2.2204460492503135e+2242.2204460492503135e+224'NaN'2.2204460492503135e+2252.2204460492503135e+225'NaN'2.2204460492503135e+2262.2204460492503135e+226'NaN'2.2204460492503132e+2272.2204460492503132e+227'NaN'2.2204460492503132e+2282.2204460492503132e+228'NaN'2.2204460492503132e+2292.2204460492503134e+229'NaN'2.2204460492503132e+2302.2204460492503132e+230'NaN'2.2204460492503133e+2312.2204460492503133e+231'NaN'2.2204460492503135e+2322.2204460492503137e+232'NaN'2.2204460492503133e+2332.2204460492503133e+233'NaN'2.2204460492503133e+2342.2204460492503133e+234'NaN'2.2204460492503132e+2352.2204460492503132e+235'NaN'2.2204460492503133e+2362.2204460492503133e+236'NaN'2.2204460492503133e+2372.2204460492503137e+237'NaN'2.2204460492503132e+2382.2204460492503132e+238'NaN'2.220446049250313e+2392.220446049250313e+239'NaN'2.220446049250313e+2402.220446049250313e+240'NaN'2.220446049250313e+2412.2204460492503134e+241'NaN'2.220446049250313e+2422.220446049250313e+242'NaN'2.2204460492503133e+2432.2204460492503133e+243'NaN'2.2204460492503132e+2442.2204460492503132e+244'NaN'2.2204460492503134e+2452.2204460492503134e+245'NaN'2.2204460492503135e+2462.2204460492503135e+246'NaN'2.2204460492503134e+2472.2204460492503137e+247'NaN'2.2204460492503134e+2482.2204460492503134e+248'NaN'2.2204460492503136e+2492.2204460492503136e+249'NaN'2.2204460492503138e+2502.2204460492503138e+250'NaN'2.2204460492503138e+2512.2204460492503138e+251'NaN'2.220446049250314e+2522.220446049250314e+252'NaN'2.2204460492503138e+2532.2204460492503138e+253'NaN'2.2204460492503137e+2542.2204460492503134e+254'NaN'2.220446049250314e+2552.220446049250314e+255'NaN'2.220446049250314e+2562.220446049250314e+256'NaN'2.2204460492503138e+2572.2204460492503138e+257'NaN'2.2204460492503138e+2582.2204460492503138e+258'NaN'2.2204460492503137e+2592.2204460492503137e+259'NaN'2.2204460492503137e+2602.2204460492503137e+260'NaN'2.2204460492503135e+2612.2204460492503135e+261'NaN'2.2204460492503133e+2622.220446049250313e+262'NaN'2.2204460492503135e+2632.2204460492503135e+263'NaN'2.2204460492503136e+2642.2204460492503136e+264'NaN'2.2204460492503135e+2652.2204460492503135e+265'NaN'2.2204460492503134e+2662.2204460492503137e+266'NaN'2.2204460492503134e+2672.2204460492503134e+267'NaN'2.2204460492503136e+2682.2204460492503136e+268'NaN'2.2204460492503136e+2692.2204460492503136e+269'NaN'2.2204460492503136e+2702.2204460492503136e+270'NaN'2.2204460492503136e+2712.2204460492503136e+271'NaN'2.2204460492503137e+2722.2204460492503137e+272'NaN'2.2204460492503137e+2732.2204460492503137e+273'NaN'2.2204460492503136e+2742.2204460492503136e+274'NaN'2.2204460492503136e+2752.2204460492503136e+275'NaN'2.2204460492503136e+2762.2204460492503136e+276'NaN'2.2204460492503137e+2772.2204460492503137e+277'NaN'2.2204460492503135e+2782.2204460492503135e+278'NaN'2.2204460492503135e+2792.2204460492503135e+279'NaN'2.2204460492503134e+2802.2204460492503134e+280'NaN'2.2204460492503134e+2812.2204460492503138e+281'NaN'2.2204460492503135e+2822.2204460492503135e+282'NaN'2.2204460492503136e+2832.2204460492503136e+283'NaN'2.2204460492503135e+2842.2204460492503135e+284'NaN'2.2204460492503135e+2852.2204460492503135e+285'NaN'2.2204460492503133e+2862.2204460492503133e+286'NaN'2.220446049250313e+2872.220446049250313e+287'NaN'2.220446049250313e+2882.2204460492503127e+288'NaN'2.220446049250313e+2892.220446049250313e+289'NaN'2.2204460492503128e+2902.2204460492503128e+290'NaN'2.2204460492503128e+2912.2204460492503128e+291'NaN'2.2204460492503127e+2922.2204460492503127e+292'NaN'2.2204460492503128e+2932.2204460492503124e+293'NaN'2.2204460492503128e+2942.220446049250313e+294'NaN'2.220446049250313e+2952.220446049250313e+295'NaN'2.220446049250313e+2962.2204460492503126e+296'NaN'2.220446049250313e+2972.220446049250313e+297'NaN'2.2204460492503132e+2982.2204460492503132e+298'NaN'2.220446049250313e+2992.2204460492503135e+299'NaN'2.220446049250313e+3002.220446049250313e+300'NaN'2.220446049250313e+3012.220446049250313e+301'NaN'2.220446049250313e+3022.2204460492503127e+302'NaN'2.2204460492503132e+3032.2204460492503132e+303'NaN'2.2204460492503134e+3042.2204460492503134e+304'NaN'2.2204460492503133e+3052.2204460492503133e+305'NaN'2.2204460492503133e+306Infinity'NaN'2.2204460492503132e+307Infinity'NaN' This happens when the stringification in Would something as simple as starting from |
@SheetJSDev i've pushed a new commit that reverts to the native Math.round if the result is Did you have any luck at your end? |
4321.0000.00434.32104,321.04,3214,3214,321.00 | ||
4321234.00434.32124321.23404,321,234.04,321,2344,321,2344,321,234.00 | ||
1234652.68499999999995.00121.23471234.65271,234,652.71,234,6531,234,6531,234,652.69 | ||
-4321234-0.0043-4.3212-4321.2340-4,321,234.0-4,321,234-4,321,234-4,321,234.00 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
The first result should be -.0043 (no leading '0')
Suggested fix forSheetJS/sheetjs#1105