2020-02-17 浮点数相关知识

2020-02-17  本文已影响0人  FConfidence

浮点数相关知识

IEEE754

  1. JavaScript中的浮点数采用IEEE-754格式的规定。更具体的说是一个双精度格式,这意味着每个浮点数占64位。
  2. 标识位1位
    • JavaScript中的某些东西如+0 和 -0,标志位说明一切——JavaScript中的所有数字都有符号位。
  3. 指数: 11位–这允许指数最大到1024
    • Infinity和NaN也被编码进浮点数——2047作为一个特殊的指数。
  4. 尾数: 剩下的52位代表的尾数。
    • 如果尾数是0,它是一个正无穷或负无限。
    • 如果不是,那么它是NaN。

舍入误差

  1. 浮点规范指定ECMAScript最多使用52个尾数,所以舍入误差变得很小——规范的具体细节规避了大部分的舍入误差。

  2. 在JavaScript处理浮点数

    • 建议是使用库,像sinfuljs或mathjs。
    • 另一个被多次重复的建议是使用内置的toPrecision()和toFixed()方法。使用他们时最容易犯得逻辑错误是忘记这些方法的返回值字符串。
    function add_Error(x, y) {
        return x.toPrecision() + y.toPrecision()
    }
    /*
    > foo(0.1, 0.2)
    "0.10.2"
    **/
    

    设计内置方法toPrecision()和toFixed()的目的仅是用于显示。谨慎使用!

上一篇 下一篇

猜你喜欢

热点阅读