猜一猜: Console.WriteLine(5000.88 + 5000 == 10000.88); 结果为True还是False?
来源:互联网 发布:给网络电视安装软件 编辑:程序博客网 时间:2024/05/16 17:48
By Ben
致命的错误出现在一个项目实践中: Console.WriteLine(5000.88 + 5000 == 10000.88);结果为False
详细解释:
致命的错误出现在一个项目实践中: Console.WriteLine(5000.88 + 5000 == 10000.88);结果为False
分析: 用"=="来比较两个double应该相等的类型,返回真值完全是不确定的。计算机对浮点数的进行计算的原理是只保证必要精度内正确即可,例如:double a=0.9+0.2;那么只能保证小数点后1位这个精度是正确的,计算机计算这个加法的结果a的值可能是1.100000001,也可能是1.100000002也可能就是1.1,也就是说计算机计算后并不保证0.1以下各位得到的都是正确的,所以直接用==进行比较是不可行的。 比较两个double数是否相等应看其相减的绝对值是否小于某一数值,此值一般低于两数精确度 例如:Console.WriteLine(Math.Abs(5000+5000.88-10000.88)<0.001); |
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=130722
- 猜一猜: Console.WriteLine(5000.88 + 5000 == 10000.88); 结果为True还是False?
- 猜一猜: Console.WriteLine(5000.88 + 5000 == 10000.88); 结果为True还是False?
- 猜一猜: Console.WriteLine(5000.88 + 5000 == 10000.88); 结果为True还是False?
- 猜一猜: Console.WriteLine(5000.88 + 5000 == 10000.88); 结果为True还是False?
- 猜一猜: Console.WriteLine(5000.88 + 5000 == 10000.88); 结果为True还是False?
- 猜一猜: Console.WriteLine(5000.88 + 5000 == 10000.88); 结果为True还是False?
- 猜一猜: Console.WriteLine(5000.88 + 5000 == 10000.88); 结果为True还是False?
- 猜一猜: Console.WriteLine(5000.88 + 5000 == 10000.88); 结果为True还是False?
- 猜一猜: Console.WriteLine(5000.88 + 5000 == 10000.88); 结果为True还是False?
- 猜一猜: Console.WriteLine(5000.88 + 5000 == 10000.88); 结果为True还是False?
- 猜一猜: Console.WriteLine(5000.88 + 5000 == 10000.88); 结果为True还是False?
- 猜一猜: Console.WriteLine(5000.88 + 5000 == 10000.88); 结果为True还是False?
- 猜一猜: Console.WriteLine(5000.88 + 5000 == 10000.88); 结果为True还是False?
- 猜一猜: Console.WriteLine(5000.88 + 5000 == 10000.88); 结果为True还是False?
- 猜一猜: Console.WriteLine(5000.88 + 5000 == 10000.88); 结果为True还是False?
- 猜一猜: Console.WriteLine(5000.88 + 5000 == 10000.88); 结果为True还是False?
- 猜一猜: Console.WriteLine(5000.88 + 5000 == 10000.88); 结果为True还是False?
- 猜一猜: Console.WriteLine(5000.88 + 5000 == 10000.88); 结果为True还是False?
- 递归算法在javascript中使用的小技巧 (javascript的对象封装方法介绍)
- 在XSL里应用javascript/C# Script等
- javascript:去除字符串的前后空格
- 形象管理:你想看起来更年轻吗?
- 用一条SQL完成数据表的行统计
- 猜一猜: Console.WriteLine(5000.88 + 5000 == 10000.88); 结果为True还是False?
- 如何只用HTML画出一个圆角的Table表格?
- 独立部署cas服务器以测试客户端各应用程序统一的单点登陆认证功能
- Reporting Service for SQL server 2000预览研究
- ASP.NET 2.0 Beta 1研究总结
- 如何使IFrame的长宽与内容自动适应大小
- 用一条SQL完成数据表的行统计
- 2007年6月份最新《The Architecture Journal》内容摘要翻译
- 利用css里expression来实现界面对象的批量控制