| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- //-------------------------------------------------------------------------------------------------------
- // Copyright (C) Microsoft. All rights reserved.
- // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
- //-------------------------------------------------------------------------------------------------------
- function isnegativezero(x, str)
- {
- // this is a quick way to check if a number is -0
- return !(x != 0 || 1/x >= 0)
- }
- function test(value, expected)
- {
- var result = value | 0; // ToInt32
- WScript.Echo((result === expected && isnegativezero(result) === isnegativezero(expected)? "PASS:" : "FAIL: ") +
- (isnegativezero(value)? "-0.0" : value) + " " + (isnegativezero(result)? "-0.0" : result));
- }
- var negZero = -0.0;
- test(0.0, 0.0);
- test(-0.0, 0.0);
- test(0.1, 0);
- test(-0.1, 0);
- test(1.1, 1);
- test(-1.1, -1);
- test(4294967295.5, -1);
- test(-4294967295.5, 1);
- test(4294967296, 0);
- test(-4294967296, 0);
- test(4294967297.1, 1);
- test(-4294967297.1, -1);
- test(2147483647, 2147483647);
- test(2147483648, -2147483648);
- test(Number.NEGATIVE_INFINITY, 0);
- test(Number.POSITIVE_INFINITY, 0);
- test(Number.NaN, 0);
- // We start losing precision here
- test(2147483647 * 2147483647 + 1024, 1024);
- // MAX 64-bit integer - 1024
- test(9223372036854775000, -1024);
- test(-9223372036854775000, 1024);
- // > 64-bit
- test(9223372036854776000, 0);
- test(9223372036854777000, 2048);
- test(9223372036854778000, 2048);
- test(-9223372036854776000, 0);
- test(-9223372036854777000, -2048);
- test(-9223372036854778000, -2048);
|