import java.math.*;
import java.lang.Float;public class BigDecimal001 {
public static void main(String args[])
{
double d1 = 2.0-1.9;
System.out.println(d1);
float f1 = 2.0f-1.9f;
System.out.println(f1);
BigDecimal test=new BigDecimal("2.0");
BigDecimal b1 = test.subtract(new BigDecimal("1.9"));
System.out.println(b1);
System.out.println((2-java.lang.Math.pow(2,152))*java.lang.Math.pow(2,1023));
}
} 运行结果:
0.10000000000000009
0.100000024
0.1
有谁能告诉我为什么会这样吗?
import java.lang.Float;public class BigDecimal001 {
public static void main(String args[])
{
double d1 = 2.0-1.9;
System.out.println(d1);
float f1 = 2.0f-1.9f;
System.out.println(f1);
BigDecimal test=new BigDecimal("2.0");
BigDecimal b1 = test.subtract(new BigDecimal("1.9"));
System.out.println(b1);
System.out.println((2-java.lang.Math.pow(2,152))*java.lang.Math.pow(2,1023));
}
} 运行结果:
0.10000000000000009
0.100000024
0.1
有谁能告诉我为什么会这样吗?
http://blog.csdn.net/treeroot/articles/94752.aspx