float double 的精度损失---- 轻易就可以达到“严重”的等级

1, 5.1f * 10, 甚至5.1f * 10f ,其运算结果都是 double 型,就是说,两个float 相乘,得到一个double。证据:调试,watch窗口中加入5.1f * 10f ,类型显示“double”

2,更强的是 double (50.999999046325684)转换成 float 转换成 51.0,但如果转换成 int、UInt16,就会转换成 50,证据:
double d = 50.999999046325684;
f = (float)d;
i = (UInt16)d;
结果是 f = 51.0, i = 50

单独说起来并不难,但隐藏在一大段程序里,就不一定容易发现

Published At
Categories with Web编程
Tagged with
comments powered by Disqus