我有var number;
并且它通过一些计算得到分配。
如果我这样做,print(number);
我会得到NaN
回应;
我希望我能够做类似的事情
if (number is NaN)
Run Code Online (Sandbox Code Playgroud)
但我得到 NaN 没有定义。如何检查变量是否NaN
处于颤动状态?
Rao*_*che 24
NAN是一个常量,所以你可以这样做
if (number == double.nan)
Run Code Online (Sandbox Code Playgroud)
你也有这样的属性isNaN但使用它,你必须提供的类型,因为它仅是提供num
这么两种 double
或int
if (number.isNaN)
Run Code Online (Sandbox Code Playgroud)
Voi*_*ler 13
您无法通过将 nan 与 double.nan 常量进行比较来检查它。isNan 是要走的路。
yourNumber.isNaN
Run Code Online (Sandbox Code Playgroud)
为什么与 double.nan 比较不起作用?
yourNumber.isNaN
Run Code Online (Sandbox Code Playgroud)
这是因为根据定义 NaN 不等于其自身。事实上,如果您想自己实现 NaN 检查,您可以这样做:
print(double.nan == double.nan);
// prints false
print(double.nan.isNaN);
// prints true
Run Code Online (Sandbox Code Playgroud)
这还会导致如果将 NaN 保存到任何其他类型的对象中,该对象将不再等于其自身(只要在比较中使用 NaN - 就像数据类一样)。这可能会导致意外的行为。您可以使用此代码来检查这种情况。
bool hasNan(Object? x) => x != x;
Run Code Online (Sandbox Code Playgroud)
一般来说,这对于我所知道的所有语言都是如此——不仅仅是 dart——因为它是一个硬件问题。
归档时间: |
|
查看次数: |
9961 次 |
最近记录: |