本帖最后由 荣凯旋 于 2012-1-20 18:23 编辑
class Text
{
public static void main(String[] args)
{
float f = 0.15f;
double d = f;
System.out.println("d="+d);//输出结果:0.15000000596046448 同一个数弄俩不同类型!!类型提升,位数有4个字节变8个字节,有小数点后的7为升到15位
double d1 = 0.15;
float f1 = (float)d1;
System.out.println("f1="+f1);//输出结果:0.15 同一个数弄俩不同类型!强制转换,有8个字节强制变4个字节,丢弃后4个字节~所以值是这个~有小数点后的15为变7位,后面都是0就舍弃啦
double d2 = 1.15 + 1.15f;
System.out.println("d2="+d2);//输出结果:2.299999976158142 类型不同,小数点后面的位数相同
double d3 = 1.15 + 1.25f;
System.out.println("d3="+d3);//输出结果: 类型不同,小数点的位数是不同 结果:相加2.4
float f2 = 1.25f +1.15f;
System.out.println("f2="+f2);//输出结果:类型相同 小数点后数字不同 结果是2.4
}
}
有此结果的出了一个新问题! 为什么 也就是 d2 d3 的值得问题~~没搞清楚 为什么小数点位后面的数相同,相加就有会出现精度问题呢??
刚搞懂一个问题 新问题有出现啦~~大家想想为啥呀???是不是我咱牛角尖啦??问题出在那里呢?? |