On Jul 12, 2013, at 10:27 AM, Tab Atkins Jr. wrote: > On Fri, Jul 12, 2013 at 10:19 AM, Mark S. Miller <[email protected]> wrote: >> No. Even if toInteger meant "no fractional component", I would still expect >> it only to return true if there is some specific mathematical integer that >> the JS number can be said to exactly represent. For the same reason, I think >> isInteger(-0) should be true and isInteger(NaN) should be false. > > Agreed. isInteger() has one job, and it's kinda worthless if it can't > even do that. How it should be: > > Number.isInteger(-0) == true > Number.isInteger(NaN) == false > Number.isInteger(Infinity) == false > > And, because of what we discussed in the recent thread... > > Number.isInteger(Math.pow(2,53)-1) == true > Number.isInteger(Math.pow(2,53)) == false
In other words you want to define Number.isInteger to return true only if it's argument is an integer number in the range -(2^53-1)..2^53-1 That's a useful test and a plausible definition of Number.isInteger but it will also probably be surprising to programmers who are familiar with the esoterics of IEEE floats. If we went that direction what should Number.toInteger do for values outside that range? Allen _______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

