简单来说只要使用IEEE_754标准来存储浮点数的语言都存在这种问题,出现的原因就是小数在转换成二进制的过程中由于位数的限制不能完全表示这个小数导致精度丢失。
double型的0.29*100=28.9999999...;或是0.14*100=14.0000...000001
可以用round()四舍五入
用法如
double a=0.14;
cout<<round(a*100);
而round(a*100)此时便等于14。
简单来说只要使用IEEE_754标准来存储浮点数的语言都存在这种问题,出现的原因就是小数在转换成二进制的过程中由于位数的限制不能完全表示这个小数导致精度丢失。
double型的0.29*100=28.9999999...;或是0.14*100=14.0000...000001
可以用round()四舍五入
用法如
double a=0.14;
cout<<round(a*100);
而round(a*100)此时便等于14。