c# - 对于这种特殊情况,如何检查变量是否非双精度?
问题描述
我有一个简单的 GUI 程序,其中实时绘图(使用WinForms
图表)由于非双精度值(如无穷大或NaN
. 所以我想过滤诸如无穷大NaN
或ect
. 并且只绘制有效的双精度值。它也可以是任何其他非双精度类型。
我尝试以下方法:
if(!double.IsInfinity(value)){
chart1.Series["mySerie"].Points.AddY(value);
}
但是上面只检查值是否不是无穷大而不是其他非双重可能性。在我的情况下双。TryParse
也不起作用,因为它用于检查文本是否为双精度。
因此,就我而言,我通常从设备接收数据是双倍的。但有时它会输出非双精度值,是否有快速解决方法?
解决方案
用一系列可接受的值来说明我的评论:
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
}
}
推荐阅读
- html - 关于 id 和 class 的使用:id 在页面中是否应该始终唯一?
- python - 将 2 个文件上传到谷歌驱动器和 python
- android - 带有时间戳的 ProgressBar,以毫秒为单位
- python - Hermite约束下复值齐次线性系统的非零解
- javascript - 如何使 react-grid-galary 水平滚动?
- c# - 如何防止 Application.SetSuspendState 关闭系统?
- javascript - 使用 TomTom Web SDK 创建集群
- angular - 如果发生,每小时仅显示一次警报
- python - 连续出现两次条目的列表推导
- mfc - 获取 Windows GUI 应用程序的控制台输出