public class Change{
public static void main(String[] args){
System.out.println(2.00 - 1.10);
}
}
Solution:
结果显示是:
0.8999999999999999999999999999
由于1.1不能用double来准确表示,而是用了一个接近的数来表示。
TID:
not all decimals can be represnted exaclty using binary floating-point;
Binary floating-point is particularly ill-suited to calculations.
Always use the BigDecimal(String) constructor, newver BigDecimal(double).
avoid float and double where exact answers are required; for monetary calculations, use int, long, or BigDecimal.
Correctly:
import java.math.BigDecimal;
public class Change{
public static void main(String[] args){
System.out.println(new BigDecimal("2.00").subtract(new BigDecimal("1.10")));
}
}
public static void main(String[] args){
System.out.println(2.00 - 1.10);
}
}
Solution:
结果显示是:
0.8999999999999999999999999999
由于1.1不能用double来准确表示,而是用了一个接近的数来表示。
TID:
not all decimals can be represnted exaclty using binary floating-point;
Binary floating-point is particularly ill-suited to calculations.
Always use the BigDecimal(String) constructor, newver BigDecimal(double).
avoid float and double where exact answers are required; for monetary calculations, use int, long, or BigDecimal.
Correctly:
import java.math.BigDecimal;
public class Change{
public static void main(String[] args){
System.out.println(new BigDecimal("2.00").subtract(new BigDecimal("1.10")));
}
}