如果我有double d;
:
d = 1/d;
d = 1/d;
这可能会失去精确度吗?在什么情况下例如?
答案 0 :(得分:3)
是的,当然可能会失去精确度。 float
和double
等浮点类型不是无限精确的。
double d = 123456789.0;
System.out.println(d);
d = 1 / d;
d = 1 / d;
System.out.println(d);
输出:
1.23456789E8
1.2345678899999999E8
答案 1 :(得分:0)
如果您使用double
或float
,则可能会失去精确度。
但是,如果您使用Rational
类this one,则可以避免精确丢失。
答案 2 :(得分:-1)
因为计算机系统使用固定的精度来表示数字,所以你会发现d
并不总是完全相等(1/(1/d)
),即使这个等式明显在代数上相等。
一些阅读材料:enter link description here您可能想要搜索更多内容。