Improve toString(radix) for doubles near zero
Currently, Number.prototype.toString(radix) often fails to produce the least significant bit for doubles near zero. For example, for the minimum double, 5e-324, toString(2) produces "0". This means that a user cannot reliably get the exact binary or hexdecimal value of a double from JavaScript using toString. This patch makes a slight amendment to the DoubleToRadixCString function, so that doubles where the gap to the next double is 5e-324 (i.e. doubles less than 2**-1021), are represented exactly in binary and other power-of-two bases, and close to exactly otherwise. It results in Number.prototype.toString producing the correct binary value for all doubles. R=jkummerow@chromium.org, mathias@chromium.org, yangguo@chromium.org Bug: v8:9294 Change-Id: I71506149b7c4c0eac8c38675a1ee15fb4f36f9ef Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1631601 Commit-Queue: Mathias Bynens <mathias@chromium.org> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by: Mathias Bynens <mathias@chromium.org> Cr-Commit-Position: refs/heads/master@{#61925}
Showing
Please
register
or
sign in
to comment