c# - 为什么双重比较不适用于 if 条件?

标签 c# .net

<分区>

请看我下面的代码和双重比较不能正常工作,虽然我已经转换,使用了 double.Equal() 方法,但没有结果。给假

double b;
b = (1.6 + 1.6 + 1.6) / 3.0;

if( b == 1.6d)
{
     Console.WriteLine("True");
}
else
{
     Console.WriteLine("False");
}

// if( b.Equal(1.6))  -- No Result

最佳答案

因为操作 (1.6 + 1.6 + 1.6)/3.0 的实际结果值为 1.6000000000000003

你需要像这样使用:

if(Math.Abs(1.6d - value) < TOLERANCE)
{
     Console.WriteLine("True");
}
else
{
     Console.WriteLine("False");
}

并定义可接受的公差。

看看0.30000000000000004.com

关于c# - 为什么双重比较不适用于 if 条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43687309/

相关文章:

c# - 在 asp.net 核心控制台应用程序中使用 log4net 进行日志记录

c# - 如何使用 Spreadsheetgear 为 Excel 中的单元格添加数据验证 - C# .NET

.net - 逻辑及其在 Collections.Generic 和继承中的应用

c# - 如何在两个 AVX2 vector 之间交换 128 位部分

c# - 带有 Unity 的 Automapper - 在哪里放置 CreateMap 的东西?

c# - 如何以编程方式确定是否为 SharePoint 2010 Web 应用程序启用匿名访问?

c# - Ping 不适用于 BackgroundWorker

.net - 从数据库行创建对象

c# - 在没有垃圾邮件控制台的情况下处理超时的 Socket.ReceiveFrom

c# - 使用 LINQ 将 SQL 表转为 CSV