gpt4 book ai didi

javascript - javascript中如何计算小数

转载 作者:行者123 更新时间:2023-11-28 19:30:26 25 4
gpt4 key购买 nike

我必须使用 JavaScript 在我的应用程序中进行一些小数计算,但结果出乎意料。

以下语句的结果是 1.707 [如预期]

var total=1.17+0.237+0.3;

此外,当我们添加下面的数字时,我得到 0.7070000000000001 [意外]

var totalnew=0.17+0.237+0.3;

此外,表达式 (0.1+0.2===0.3) 返回 false[意外],但 (1.1+0.2===1.3) 返回 true[如预期] 。为什么会发生这种情况以及解决方法是什么。

最佳答案

浮点是出了名的棘手。基本上可以归结为两个实数之间存在无限数量的值,因此不可能在计算机中正确表示它们。

如果您想打印我建议的数字:

total.toFixed();

这总是给你三位小数。当你想检查两个 float 是否相同时,你需要这样做:

function nearlyEqual(a, b, epsilon) {
var absA = Math.abs(a);
var absB = Math.abs(b);
var diff = Math.abs(a - b);
var minNormal = 1.1754943508222875e-38;

if (a == b) { // shortcut, handles infinities
return true;
} else if (a == 0 || b == 0 || diff < minNormal) {
// a or b is zero or both are extremely close to it
// relative error is less meaningful here
return diff < (epsilon * minNormal);
} else { // use relative error
return diff / (absA + absB) < epsilon;
}
}

nearlyEqual(0.1+0.2, 0.3, 0.0001);

正如此处建议的那样How should I do floating point comparison?

关于javascript - javascript中如何计算小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26909128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com