java double精确比较,Java float比double更精确?
Code:
class Main {
public static void main (String[] args) {
System.out.print("float: ");
System.out.println(1.35f-0.00026f);
System.out.print("double: ");
System.out.println(1.35-0.00026);
}
}
Output:
float: 1.34974
double: 1.3497400000000002
??? float got the right answer, but double is adding extra stuff from no where, Why??
Isn't double supposed to be more precise than float?
解決方案
A float is 4 bytes wide, whereas a double is 8 bytes wide.
Surely the double has more precision so it has slightly less rounding error.
Squeezing infinitely many real numbers into a finite number of bits
requires an approximate representation. Although there are infinitely
many integers, in most programs the result of integer computations can
be stored in 32 bits. In contrast, given any fixed number of bits,
most calculations with real numbers will produce quantities that
cannot be exactly represented using that many bits. Therefore the
result of a floating-point calculation must often be rounded in order
to fit back into its finite representation. This rounding error is the
characteristic feature of floating-point computation.
On a side note:-
I would suggest if you want the exact decimal values then use java.math.BigDecimal
總結
以上是生活随笔為你收集整理的java double精确比较,Java float比double更精确?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: map转字符串数组中 php_js将ma
- 下一篇: java显示星期几_Java 使用日历显