【问题标题】:Is "not >" equivalent to "<=" for a double“not >”是否等同于“<=”表示双精度
【发布时间】:2019-05-01 09:58:04
【问题描述】:
double a, b = ...;

是以下 C# 语句

!(a > b)

a <= b

等效还是有任何数字警告?

【问题讨论】:

  • !(double.NaN &gt; 1.0) => 真,double.NaN &lt;= 1.0 => 假
  • 它们在表达上是相等的。它被称为DeMorgan定理。但在某些情况下,它可能不起作用。像可以为空的值。

标签: c# conditional


【解决方案1】:

如果它们是标准的普通双精度数值,它们是等价的。

对于 nullable、NaN 等,这不是很清楚。

考虑

double? a = null;
double b = 1;

if (!(a > b))
{
   //yes
}
if ((a <= b))
{
   //no
}

或者正如Marc Gravell♦ 指出的那样,下面展示了完全相同的行为,同时坚持纯double

double a = 42;
double b = double.NaN;

【讨论】:

    猜你喜欢
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多