使用multiply的javascript中的Bug

使用multiply的javascript中的Bug,javascript,Javascript,今天,我输入了随机浮点数,首先使用普通代码乘以100,然后在控制台中输入错误的数字,控制台将返回相同的数字 给定的浮点数为:1050.6 因此:1050.6*100应该是105060,但是javascript返回我105059.99999999 有人知道为什么吗?JavaScript使用64位浮点表示(双精度)。数字在此格式中表示为整数乘以二的幂 这是基于IEEE 754标准的 分母不是2的幂的有理数不能精确表示。这就是为什么浮点乘法会给出这样的结果 资料来源: 如果您想获得实际值,有两种方法可

今天,我输入了随机浮点数,首先使用普通代码乘以100,然后在控制台中输入错误的数字,控制台将返回相同的数字

给定的浮点数为:1050.6

因此:1050.6*100应该是105060,但是javascript返回我105059.99999999


有人知道为什么吗?

JavaScript使用64位浮点表示(
双精度
)。数字在此格式中表示为整数乘以二的幂

这是基于IEEE 754标准的

分母不是2的幂的有理数不能精确表示。这就是为什么浮点乘法会给出这样的结果

资料来源:

如果您想获得实际值,有两种方法可以使用

使用
Math.round进行舍入

Math.round(1050.6 * 100)
toFixed

(1050.6 * 1000).toFixed(0)

这是计算机处理浮点数的一个特点。事实证明,十进制数字不可能总是用二进制完美地表示,因此计算机会给出最接近的近似值

请参见此问题: