chinazdy吧 关注:4贴子:145
  • 0回复贴,共1

数据转换中的问题

只看楼主收藏回复

double dou = 20.4*100;
int xxx = (int)dou;
上述两行代码,无论在C/C++还C#中, 最后打印的结果为dou=2040;xxx=2039;
且 dou.tostring(“0.00000”)(结果为2040.00000)等精度不达到很大的时候(比如取小数点后13位)(结果为2039.9999999999998),是不会显示正确值的.愿意在于:
第二行的(int)为舍弃转换,无论小数点后面事多少都会被舍弃。
如果想精确的转换,需要两步转换 以下方式都可以:
Convert.ToInt32(dou);//两步转换
Math.Round(dou);//四舍五入到最接近的整数
((int)(dou*1000))/10;//缩小误差


IP属地:江苏1楼2020-04-24 17:19回复