首页 > 解决方案 > 对于这种特殊情况,如何检查变量是否非双精度?

问题描述

我有一个简单的 GUI 程序,其中实时绘图(使用WinForms图表)由于非双精度值(如无穷大或NaN. 所以我想过滤诸如无穷大NaNect. 并且只绘制有效的双精度值。它也可以是任何其他非双精度类型。

我尝试以下方法:

if(!double.IsInfinity(value)){

chart1.Series["mySerie"].Points.AddY(value);

}

但是上面只检查值是否不是无穷大而不是其他非双重可能性。在我的情况下双。TryParse也不起作用,因为它用于检查文本是否为双精度。

因此,就我而言,我通常从设备接收数据是双倍的。但有时它会输出非双精度值,是否有快速解决方法?

标签: c#

解决方案


用一系列可接受的值来说明我的评论:

using System;
                    
public class Program
{
    public static bool Check(double x) {
        double min = -1e6, max = 1e6;
        return x > min && x < max;  
    }
        
    public static void Main()
    {
        Console.WriteLine($"NaN {Check(double.NaN)}");               // False
        Console.WriteLine($"-inf {Check(double.NegativeInfinity)}"); // False
        Console.WriteLine($"-1e7 {Check(-1e7)}");                    // False
        Console.WriteLine($"0 {Check(0)}");                          // True
        Console.WriteLine($"1e7 {Check(1e7)}");                      // False
        Console.WriteLine($"+inf {Check(double.PositiveInfinity)}"); // False
    }
}

推荐阅读