parseInt-double-truncate.js (927B)
1 // Test some double-truncation edge cases with parseInt(double). 2 3 function testPos1() { 4 with({}) {} 5 var fun = d => parseInt(d); 6 for (var i = 0; i < 2000; i++) { 7 assertEq(fun(i + 0.5), i); 8 } 9 assertEq(fun(0xf_ffff_ffff) + 345, 68719477080); 10 } 11 testPos1(); 12 13 function testPos2() { 14 with({}) {} 15 var fun = d => parseInt(d); 16 for (var i = 0; i < 2000; i++) { 17 assertEq(fun(i + 0.5), i); 18 } 19 assertEq(fun(0x8000_0000) + 345, 2147483993); 20 } 21 testPos2(); 22 23 function testNeg1() { 24 with({}) {} 25 var fun = d => parseInt(d); 26 for (var i = 0; i < 2000; i++) { 27 assertEq(fun(i + 0.5), i); 28 } 29 assertEq(fun(-0xf_ffff_ffff) - 345, -68719477080); 30 } 31 testNeg1(); 32 33 function testNeg2() { 34 with({}) {} 35 var fun = d => parseInt(d); 36 for (var i = 0; i < 2000; i++) { 37 assertEq(fun(i + 0.5), i); 38 } 39 assertEq(fun(-0x8000_0001) - 345, -2147483994); 40 } 41 testNeg2();