splitting Number into s-m-e, radix too (cf. DFP/Decimal)
dherman at mozilla.com
Wed Mar 21 00:20:00 PDT 2012
Technically you don't even need typed arrays to do it; it's just more work to implement a "pure" library that extracts the bit strings. With typed arrays it was utterly trivial (though you have to be slightly careful to avoid writing unportable code.)
On Mar 21, 2012, at 12:00 AM, Brendan Eich wrote:
> Not gonna change number (the primitive type) to IEEE 754r DFP (not sure you were getting at that in closing). Just FTR.
> These Number.prototype getters can be implemented today in top browsers (thanks to typed arrays) and in ES6 (binary data embraces and extends typed arrays). See https://github.com/dherman/float.js/.
> Roger Andrews wrote:
>> Floating-point numbers are formed of a sign (s), significand (m), exponent (e), and radix (b):
>> (-1)^s * m * b^e
>> where 0<=m<b.
>> Often we want to access the s-m-e values directly, especially the significand. Notably when doing comparison for approximate equality by "masking out" the rounding error in the low order bits; or some multiprecise work. In ES5 this is painful.
>> The sign, significand, exponent, radix are intrinsic properties of a Number (like the length of a String) - so how about exposing them as properties of Number? Say the sign, significand, and exponent could be read-write and the radix read-only.
>> 1) extracting the significand is easy:
>> 2) scaling is easy (scaleB operation):
>> x.exponent += N
>> 3) the logB operation is easy:
>> Also programmers could distinguish a binary value from a decimal without using typeof, using the 'radix' property instead. This might future-proof against the possible coming of a Decimal type without breaking existing code. Does it help there?
>> es-discuss mailing list
>> es-discuss at mozilla.org
> es-discuss mailing list
> es-discuss at mozilla.org
More information about the es-discuss