在计算1 / val两次时是否可能失去精度?

时间:2014-03-24 11:47:16

标签: java double

如果我有double d;

d = 1/d;
d = 1/d;

这可能会失去精确度吗?在什么情况下例如?

3 个答案:

答案 0 :(得分:3)

是的,当然可能会失去精确度。 floatdouble等浮点类型不是无限精确的。

double d = 123456789.0;

System.out.println(d);
d = 1 / d;
d = 1 / d;
System.out.println(d);

输出:

1.23456789E8
1.2345678899999999E8

答案 1 :(得分:0)

如果您使用doublefloat,则可能会失去精确度。

但是,如果您使用Rationalthis one,则可以避免精确丢失。

答案 2 :(得分:-1)

因为计算机系统使用固定的精度来表示数字,所以你会发现d并不总是完全相等(1/(1/d)),即使这个等式明显在代数上相等。

一些阅读材料:enter link description here您可能想要搜索更多内容。