如何在Java中以特定值获取浮点错误大小?

时间:2019-01-11 21:48:52

标签: java floating-point precision

是否存在用于发现浮点错误的Java内置函数或更好的解决方案? 或者换句话说,有没有一种方法可以找出我可以添加到double变量中且由于浮点舍入而不会被忽略的最小值?

现在我已经知道,获得它的一种好方法是翻转其中的最后一位,从变量中减去最后一位,并将结果也返回为double

double getFloatPointError(double in){
  long bits = Double.doubleToLongBits(in);
  bits^=1;
  return Math.abs(in-Double.longBitsToDouble(bits));
}

我认为这不是一个好的解决方案,因为输出结果本身是double,因此也容易出现浮点错误,并且可能会给出错误的结果。另外,我可能会用这种方法重新发明轮子,这是我要避免的事情。

说明::我知道什么是浮点值,我知道在精度很重要时不应该使用浮点值,并且我知道为此,我应该使用BigDecimal代替。请不要发布与浮点相关的一般信息和建议,因为它们不太可能包含我的问题的答案。

1 个答案:

答案 0 :(得分:1)