On Fri, Jul 12, 2013 at 3:54 PM, Jeff Walden <jwalden...@mit.edu> wrote:
> On 07/12/2013 10:27 AM, Tab Atkins Jr. wrote:
>> 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
>
> I need to comment in the other thread again and push back against what people 
> have said there, but that thread's issues aside entirely, this is very very 
> wrong.  2**53 is an integer.  That there are multiple mathematical integer 
> values that, when converted to IEEE-754 format, are equal to 2**53 is 
> irrelevant.  An integer value, that operations claim is not an integer, is 
> very very wat.

2^53 + 2 is also an integer, but it's clearly outside the range of
*exactly-representable integers*, where each integer has one and only
one representation.  You can't tell if the number you got is actually
2^53+2 or not - it might have been input as 2^53+3, or 2^53+.1, or any
number of other starting inputs.

If you agree with that reasoning that 2^53+2 should return false from
isInteger(), then you must agree that 2^53 should also return false.

If you don't agree with that reasoning, then I suppose you'd argue
that *all* numbers > 2^53 should return true, since they're all forced
into being represented as integers?

If neither of these describe your position, could you explain your
position in more detail?

~TJ
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to