javascript - 在哪些情况下乘法和除法不能解决浮点错误?

标签 javascript error-handling floating-point runtime-error precision

在下面的代码片段中,浮点误差通过乘以和除以 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/

相关文章:

Javascript 文件中的 PHP 变量

javascript - 添加类,然后单击删除并替换类

java - Ggts 内存不足错误

PHP : Custom error handler - handling parse & fatal errors

java - Apache Beam/Google 数据流 - 错误处理

c++ - float 不准确

javascript - 为什么在 JavaScript 中使用 "const"结构是一种不好的做法?

javascript - 无法访问此函数内的参数

c++ - 将 float 转换为 double 并返回 float 在 C++ 中给出相同的值吗

java - Java 的 BigDecimal 是否像 C++ 中的 long double 那样利用硬件架构?