1. 29 May, 2019 1 commit
    • Michael Mclaughlin's avatar
      Improve toString(radix) for doubles near zero · 348cc6f1
      Michael Mclaughlin authored
      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: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Reviewed-by: 's avatarMathias Bynens <mathias@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#61925}
      348cc6f1