Re: Conversion of ES Number to WebIDL long long and unsigned long long should not throw by default

Boris Zbarsky:
> The current WebIDL algorithm for long long says:
>
> Set x to sign(x) * floor(abs(x)).
> Set x to x modulo 2^64.
> If x is greater than or equal to 2^63, then set x to x − 2^64.
> If x < −(2^53 − 1) or x > 2^53 − 1, then throw a TypeError.
>
> This makes no sense. The justification is something about how your x
> might have lost precision and so you may not be hitting the 64-bit int
> you "wanted"... but in that case the check-and-throw should be done
> before reduction mod 2^64. Doing it after just means the result is
> somewhat random once your double is greater than 2^64.
>
> And if you to the check before reduction mod 2^64, then you just have
> the [EnforceRange] behavior, which people can already get if they want.

Done: 
http://dev.w3.org/cvsweb/2006/webapi/WebIDL/Overview.xml.diff?r1=1.472;r2=1.473;f=h

Received on Monday, 5 March 2012 05:08:23 UTC