Oliver Hunt (2013-07-12T17:46:10.000Z)
On Jul 12, 2013, at 10:19 AM, Mark S. Miller <erights at google.com> 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.

Oh i agree with that, i was making an observation that the behaviour (i think) will confuse people just on the basis of people equating Int32 with Integer

--Oliver

> 
> 
> On Fri, Jul 12, 2013 at 10:16 AM, Oliver Hunt <oliver at apple.com> wrote:
> 
> On Jul 12, 2013, at 8:58 AM, Luke Hoban <lukeh at microsoft.com> wrote:
> 
> >> From: Allen Wirfs-Brock [mailto:allen at wirfs-brock.com]
> >>
> >> On Jul 11, 2013, at 9:01 PM, Luke Hoban wrote:
> >>
> >>> Two questions on new Number APIs:
> >>>
> >>> 1) Is it intentional that clz is on Number.prototype instead of Number?  Why?
> >>
> >> I think there is a stronger case to me made for Math.clz(number).  Number.prototype and Math both seem like plausible homes for clz.  In the end, I placed it on Number prototype because it is an operation that is specific to a particular numeric encoding rather than an implementation of a general mathematical function.
> >>
> >
> > Yeah, I think Math would have been less surprising.  I don't feel strongly, but Number.prototype wasn't what I had expected.
> 
> I agree with luke, Math.clz seems like a better place than the prototype, otoh there's a nice conciseness to foo.clz() …
> 
> 
> >
> >>>
> >>> 2) Is it intentional that Number.toInteger(Infinity) returns true?
> >> Huh? How's that?
> >>
> >> Number.toInteger is specified as the single step:
> >>
> >>   1 Return ToInteger(number)
> >>
> >> and step 4 of the abstract operation ToInteger(number):
> >>
> >> 4 If number is +0, -0, +∞, or -∞, return number.
> >>
> >
> > Sorry, I meant 'isInteger'.  Per your quoted section, toInteger(Infinity) is Infinity, so isInteger(Infinity) is true.
> 
> I agree with MarkM that it seems bizarre that non-finite numbers may return true, but i think this is rooted in .isInteger() sounding like it means a 32bit integer (such that bitops won't modify the value) when it is actually a "no fractional component" test.
> 
> --Oliver
> 
> > _______________________________________________
> > es-discuss mailing list
> > es-discuss at mozilla.org
> > https://mail.mozilla.org/listinfo/es-discuss
> 
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
> 
> 
> 
> -- 
>     Cheers,
>     --MarkM

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20130712/f3f1de15/attachment.html>
domenic at domenicdenicola.com (2013-07-16T00:29:19.760Z)
On Jul 12, 2013, at 10:19 AM, Mark S. Miller <erights at google.com> 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`.

Oh i agree with that, i was making an observation that the behaviour (i think) will confuse people just