gpt4 book ai didi

java - 余数运算符是否容易出现浮点错误?

转载 作者:行者123 更新时间:2023-12-04 12:21:17 25 4
gpt4 key购买 nike

我想为双变量 num 创建一个 setter,但如果输入是 0.5 的倍数,我只想更新它。
这是我所拥有的,但我担心浮点错误。

public void setNum(double num) {
if (num % 0.5 == 0.0) {
this.num = num;
}
}
我假设对于一些实际上是 0.5 倍数的输入,它可能会返回一些 0.0000003 或 0.49999997,因此不是 0.0。
我能做些什么来解决这个问题?或者在这种情况下这不是问题吗?

最佳答案

除非您正在处理非常大的浮点数,否则对于实际上是 0.5 的精确倍数的数字,您不会失去准确性,因为 0.5 完全可以用二进制表示。但是对于足够接近 0.5 倍数的数字,您可能会发现(例如)10.500000000000000001 已存储为 10.5。
所以(num % 0.5 == 0.0)如果 num 肯定是真的是 0.5 的倍数,但如果 num 也可能成立是接近 0.5 的倍数的数字的稍微不准确的表示。

关于java - 余数运算符是否容易出现浮点错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69330497/

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