C#是否区分信令和安静的NaN?
如果是这样,我如何调用两者并检查属性?
答案 0 :(得分:1)
没有。我在规范或代码中找不到任何对Quiet或Signaling NaN的引用。
规范没有提到不同的NaN类型。来自4.1.6 Floating point types:
Not-a-Number值,通常缩写为NaN。 NaN由无效的浮点运算产生,例如将零除零。
源代码中的一些示例:
public const double NaN = (double)0.0 / (double)0.0;
return (*(UInt64*)(&d) & 0x7FFFFFFFFFFFFFFFL) > 0x7FF0000000000000L;
Math.IEEERemainder(double x, double y)
:
public static double IEEERemainder(double x, double y) {
if (Double.IsNaN(x)) {
return x; // IEEE 754-2008: NaN payload must be preserved
}
if (Double.IsNaN(y)) {
return y; // IEEE 754-2008: NaN payload must be preserved
}
double regularMod = x % y;
if (Double.IsNaN(regularMod)) {
return Double.NaN;
}
// ...
}