双重的目的是什么?IsNaN(双d)

本文关键字:IsNaN 是什么 | 更新日期: 2023-09-27 18:12:53

在。net中,类型Double有一个静态方法IsNan(),它接受一个参数double并返回一个bool

当然,这意味着该方法将始终返回true,因为它只能接受双精度类型?谁能解释一下这个方法的意义,以及它什么时候可能返回false?纯粹是好奇,想接受教育。

编辑:我为一个非常糟糕的问题道歉。你是对的,我应该看一下文件的。而且,是的,我的意思是"方法将始终返回false"

双重的目的是什么?IsNaN(双d)

doublefloat有"Not A Number"值,它们用来表示错误数量。NaN有一个不幸的特性,它总是将false与所有东西进行比较,包括它自己。因此,您调用一个特殊的方法来告诉您给定的双精度是否是NaN。(因为NaN是唯一的值,它们本身不相等,你也可以通过比较一个值本身来判断它是否是NaN !但是x != x在代码中看起来很奇怪;直接调用IsNaN(x)更为习惯。)

文档中是否有什么地方非常不清楚,从而促使您在这里提出问题?如果你能解释你不清楚的地方,我可以把你的反馈反馈给文档经理。

不,它只会在值是"非数字"值时返回true(例如,由于被0除)。来自文档:

返回一个值,该值指示指定的数字的计算结果是否为非数字(NaN)。

浮点操作返回NaN,表示该操作的结果未定义。例如,用0.0除以0.0得到NaN。

注意不能只做:

if (x == double.NaN)

,因为比较总是返回false。这就是为什么有一种特殊的方法来确定"NaN-ness"。(如注释中所述,您可以实际上通过使用x != x来检测它,这只对"非数字"值有效-但这不如使用专用方法那么清楚。)

如果double传递的值为NaN,则返回true;否则,假的。

NaN (Not a Number)值在这里定义。这个函数基本上检查给定的双精度数是否等于NaN如果是这种情况value返回true。在调试或确保算术运算按您想要的方式工作并且不返回任何不明确的结果时,可能需要这样做。

就像双精度体有consts代表MinValueMaxValue一样,它们也有一个const代表NaN。双操作返回NaN的一个例子是当将0插入0时。

浮点操作返回NaN,表示该操作的结果未定义。例如,用0.0除以0.0得到NaN。

Double在c#中表示浮点数。这些数字表示小数,但由于可用存储的位宽有限,它不能表示所有数字。

因此,标准指定了一个特殊的值(实际上是几个),称为"非数字"或简称NaN。这些特殊值不同于所有其他值,是特殊的句柄。

有关NaN的更多信息,请参阅Wikipedia条目。

请注意,还有其他特殊值,如正无穷大和负无穷大,它们与NaN不同。

似乎你正在解释的方法意味着isnotdouble。但函数不是这样的。方法是IsNan,意思是isnotannumber。这种情况可能发生在除0、将一些未初始化的内存垃圾呈现为双精度类型或其他情况下。你可以在维基百科上阅读更多关于非数字(NAN)的内容