一直以为丢失精度是丢失小数点后的值,其实不是,小数点前的值也会丢失,比如下面的代码,
int a = 1234567890;
float b = (float)a;
int c = (int)b;
将int转为float,再转回int,数据就不对了。
a = 1234567890
b = 1.23457e+009
c = 1234567936
a和c的值不同,因此float转换后丢失数据了,float只能保存6~7位有效值
一直以为丢失精度是丢失小数点后的值,其实不是,小数点前的值也会丢失,比如下面的代码,
int a = 1234567890;
float b = (float)a;
int c = (int)b;
将int转为float,再转回int,数据就不对了。
a = 1234567890
b = 1.23457e+009
c = 1234567936
a和c的值不同,因此float转换后丢失数据了,float只能保存6~7位有效值