在下面的代码片段中,浮点误差通过乘以和除以 10 来解决。
如果没有乘法和除法,z 的值将显示为 0.30000000000000004
,而不是 0.3
。
这种方法“似乎”并不理想:
- 每个数字都有额外的计算开销。
- 额外的计算将导致额外的 CPU 消耗。
var x = 0.1;
var y = 0.2;
var z = (x * 10 + y * 10) / 10;
document.getElementById("demo").innerHTML = z;
<p id="demo"></p>
问题:
- 开发人员是否可以在所有使用浮点的情况下盲目使用它?
- 是否存在这种乘法和除法方法无法解决 float 错误的情况?
最佳答案
为什么不使用具有一定精度的 .toFixed
以及 parseFloat
。
var x = 0.1;
var y = 0.2;
function add(foo, bar, precision){
return parseFloat((foo + bar).toFixed(precision));
}
var sum = add(x, y, 1);
alert(sum);
关于javascript - 在哪些情况下乘法和除法不能解决浮点错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34390608/