gpt4 book ai didi

乘法时的 JavaScript Epsilon

转载 作者:行者123 更新时间:2023-11-30 21:01:22 29 4
gpt4 key购买 nike

我在想 ES6 中的相等是封闭的情况,就像这个基本的例子:

x = 0.2;
y = 0.3;
z = 0.1;
equal = (Math.abs(x - (y - z)) < Number.EPSILON); // true
console.log(equal)

但在这种(乘法)情况下它不起作用:

x = 2.3;
y = 23;
z = 0.1;
equal = (Math.abs(x - (y * z))) < Number.EPSILON; // false
console.log(equal)

我想错了吗?它是专为加号和减号运算而设计的吗?我怎样才能安全地修复它(当你将 epsilon 乘以任何大于 2 的值时,这是真的)?

最佳答案

尝试打印 Math.abs(x - (y * z))EPSILON 的值:

x = 2.3;
y = 23;
z = 0.1;
equal = (Math.abs(x - (y * z))) < Number.EPSILON; // false
console.log(equal)
console.log(Math.abs(x - (y * z)))
console.log(Number.EPSILON)
console.log(Math.abs(x - (y * z)) == 2*Number.EPSILON)

为避免这种情况,您应该检查差异的顺序,并将其与 EPSILON 进行比较,而不是比较实际值:

x = 2.3;
y = 23;
z = 0.1;
equal = (Math.abs(x - (y * z)))/ Number.EPSILON < 10;

console.log(equal)

关于乘法时的 JavaScript Epsilon,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47117952/

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