javascript 增加 1/8 问题

标签 javascript

<分区>

for (var i = 0; i < 10; i += .1) {
}

console.log(i) === 10.09999999999998 

但是...

for (var i = 0; i < 10; i += 1/8) {
}

console.log(i) === 10

为什么递增1/8结果是整数?

最佳答案

因为 1/8 可以精确表示为以 2 为底的(二进制)分数,但 0.1 不能。 1/8 是 2 的负三次方,但 0.1 不是 2 的任何整数次方。浮点值以二进制形式存储,因此与对 2 的非整数幂的数学相比,对 2 的整数幂的数学更有可能返回精确值。

也就是说,最好假设没有浮点运算是完全精确的。不同的语言和处理器可能会给出不同的结果,所以不要指望 1/8 求和在任何地方都有效。

关于javascript 增加 1/8 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34494177/

相关文章:

Javascript 动画定位和缩放问题

javascript - 闭包问题和别处定义的方法

javascript - Node JS http-proxy - 创建 URL 的问题

javascript - 谷歌地图获取中心不返回有效的经度

php - 将多选的数组数据发送到 Mysql

javascript - 在悬停时滑入隐藏元素

javascript - 如何将脚本加载到 webpack 中

javascript - 创建 Canvas 矩阵

javascript - node.js 嵌套 http req 对象未定义 - bodyParser.urlencoded({ 扩展 : true } not working

javascript - 第一个函数卡在 async.js 中