rob*_*ede 4 javascript math floating-point-precision
好的,所以我得到一些数字不能用二进制正确表示,就像1/3不能用十进制完全表示一样.
那么为什么我在console.log(0.3)它返回0.3但是当我在console.log(0.1 + 0.2)时返回0.30000000000000004
为什么简单地输出0.3时会出现错误(如果是偶数),但是当加法发生时却没有?
假设我们以十进制表示约1/3和2/3.
1/3 = 0.333
2/3 = 0.667
Run Code Online (Sandbox Code Playgroud)
我们加1/3 + 1/3:
1/3+1/3 = 0.333 + 0.333 = 0.666
Run Code Online (Sandbox Code Playgroud)
我们没有得到2/3的近似值.将1/3舍入到我们可以用十进制表示的东西时,产生的数字不等于我们舍入2/3时得到的数字的一半.
同样的事情发生在二进制中.我们将0.1和0.2舍入到我们可以用二进制表示的数字,但是近似值的总和与我们得到的数值略有不同(如果我们接近0.3).我们得到更高的东西,结果显示为0.30000000000000004.
| 归档时间: |
|
| 查看次数: |
194 次 |
| 最近记录: |