博客园  :: 首页  :: 新随笔  :: 联系 :: 管理

比较Double型数据时的注意事项

Posted on 2011-07-27 17:25  codingsilence  阅读(996)  评论(0编辑  收藏  举报
 

比较Double型数据时的注意事项

 

Console.WriteLine(7.88 + 5.00 == 12.88);

结果为False,为什么呢?

分析:

用"=="来比较两个double应该相等的类型,返回真值完全是不确定的。计算机对浮点数的进行计算的原理是只保证必要精度内正确即可,例如:double a=0.9+0.2;那么只能保证小数点后1位这个精度是正确的,计算机计算这个加法的结果a的值可能是1.100000001,也可能是1.100000002也可能就是1.1,也就是说计算机计算后并不保证0.1以下各位得到的都是正确的,所以直接用==进行比较是不可行的。
我们知道数据在电脑中是以1或0来存储的

解决办法:

比较两个double数是否相等应看其相减的绝对值是否小于某一数值,此值一般低于两数精确度

例如:Console.WriteLine(Math.Abs(7.88 + 5.00 - 12.88)<0.001);