<分区>
请看我下面的代码和双重比较不能正常工作,虽然我已经转换,使用了 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
<分区>
请看我下面的代码和双重比较不能正常工作,虽然我已经转换,使用了 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");
}
并定义可接受的公差。
关于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