首页 > 分享 > Console.WriteLine(5000.88 + 5000 == 10000.88); 结果为True还是False?

Console.WriteLine(5000.88 + 5000 == 10000.88); 结果为True还是False?

最新推荐文章于 2021-09-06 17:16:35 发布

huangkelong 于 2007-12-23 07:33:00 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

By Ben

致命的错误出现在一个项目实践中: 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


相关知识

@RequestParam(required = true)的误区
关于vue2非表单元素使用contenteditable=“true”(富文本编辑器雏形)
@Autowired(required=false)注入注意的问题
java学习day03
鸢尾花数据分析项目(附详细代码和结果)
字符串(C# 编程指南)
基于pytorch搭建ResNet神经网络用于花类识别
下面程序的执行结果为?var a = 0;while(true){a++;if(
字符串
一道js题 [] == ![] 引发关于严格运算符(===)和相等运算符(==)的思考?

网址: Console.WriteLine(5000.88 + 5000 == 10000.88); 结果为True还是False? https://m.huajiangbk.com/newsview839807.html

所属分类:花卉
上一篇: 【机器学习
下一篇: 官宣!嵊州市树市花评选结果揭晓