摘要: double f;int num =(int) f*100;结果是:输入f = 1.23, 输出 num = 122. 输入f = 1.25 输出 num =125这就是著名的double精度损失问题。因为1.23在计算机里面只能表示为近似值:1.2299999999.........而1.25却能被精确的表示:解决的办法是:int num = (int)(f*100+0.0001),这个0.0001根据你需要的精度来设置,是可以改变的这时候,不管f=1.23还是f=1.25,结果都是我们想要的123和125.关键是要理解: 10110101 只是近似等于 1.0110101 * 2^7. 阅读全文
posted @ 2012-04-10 22:18 qimi 阅读(1250) 评论(0) 推荐(0) 编辑