是否存在用于发现浮点错误的Java内置函数或更好的解决方案?
或者换句话说,有没有一种方法可以找出我可以添加到double
变量中且由于浮点舍入而不会被忽略的最小值?
现在我已经知道,获得它的一种好方法是翻转其中的最后一位,从变量中减去最后一位,并将结果也返回为double
。
double getFloatPointError(double in){
long bits = Double.doubleToLongBits(in);
bits^=1;
return Math.abs(in-Double.longBitsToDouble(bits));
}
我认为这不是一个好的解决方案,因为输出结果本身是double
,因此也容易出现浮点错误,并且可能会给出错误的结果。另外,我可能会用这种方法重新发明轮子,这是我要避免的事情。
说明::我知道什么是浮点值,我知道在精度很重要时不应该使用浮点值,并且我知道为此,我应该使用BigDecimal
代替。请不要发布与浮点相关的一般信息和建议,因为它们不太可能包含我的问题的答案。
答案 0 :(得分:1)