使用multiply的javascript中的Bug
今天,我输入了随机浮点数,首先使用普通代码乘以100,然后在控制台中输入错误的数字,控制台将返回相同的数字 给定的浮点数为:1050.6 因此:1050.6*100应该是105060,但是javascript返回我105059.99999999使用multiply的javascript中的Bug,javascript,Javascript,今天,我输入了随机浮点数,首先使用普通代码乘以100,然后在控制台中输入错误的数字,控制台将返回相同的数字 给定的浮点数为:1050.6 因此:1050.6*100应该是105060,但是javascript返回我105059.99999999 有人知道为什么吗?JavaScript使用64位浮点表示(双精度)。数字在此格式中表示为整数乘以二的幂 这是基于IEEE 754标准的 分母不是2的幂的有理数不能精确表示。这就是为什么浮点乘法会给出这样的结果 资料来源: 如果您想获得实际值,有两种方法可
有人知道为什么吗?JavaScript使用64位浮点表示(
双精度
)。数字在此格式中表示为整数乘以二的幂
这是基于IEEE 754标准的
分母不是2的幂的有理数不能精确表示。这就是为什么浮点乘法会给出这样的结果
资料来源:
如果您想获得实际值,有两种方法可以使用
使用Math.round进行舍入
Math.round(1050.6 * 100)
或toFixed
(1050.6 * 1000).toFixed(0)
这是计算机处理浮点数的一个特点。事实证明,十进制数字不可能总是用二进制完美地表示,因此计算机会给出最接近的近似值
请参见此问题: