强制类型转换与常量类型转换相关
sabi小白想知道这个强制转换为何结果不同double c=(float)a+(float)b;//输出3.265050
float d=(float)a+(float)b;//输出3.2650249
也就是说变量float d的右边在运算过程中完全没有进行类型转换,依旧用double a和double b带入的。而把左值切换成double就按照需要的结果输出了。
好奇为何会这样,学艺不精请大神轻点喷。 其实这是一个精度的问题,我们都知道在计算机里的浮点是都是以一个近似值的形式来存放,所以有一点精度的损失是很正常的,
其次 double 是一个双精度的数据,float 是一个单精度的数据, 所以他么的数据有一点精度的偏差是很正常的(只要这个偏差不要太大就好了, 一般是 ±0.000001)。
页:
[1]