W3C home > Mailing lists > Public > public-script-coord@w3.org > January to March 2012

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

From: Cameron McCormack <cam@mcc.id.au>
Date: Mon, 05 Mar 2012 16:07:42 +1100
Message-ID: <4F544A1E.8010404@mcc.id.au>
To: Boris Zbarsky <bzbarsky@MIT.EDU>
CC: "public-script-coord@w3.org" <public-script-coord@w3.org>
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

This archive was generated by hypermail 2.3.1 : Wednesday, 8 May 2013 19:30:05 UTC