草庐IT

c# - 为什么将 NaN 转换为 long 会产生有效结果?

在下面的示例代码中,我除以零,当我使用调试器单步执行它时,(被除数/除数)产生无穷大或NaN(如果除数为零)。当我将此结果转换为long时,我会得到一个有效结果,通常类似于-9223372036854775808。为什么这个转换有效?为什么它不停止执行(例如抛出异常)而不是分配一个任意值?doubledivisor=0;doubledividend=7;longresult=(long)(dividend/divisor); 最佳答案 Whyisthiscastvalid?如果在编译时已知转换可能成功或总是成功,则转换是有效的。只有

c# - 为什么在 C# 中使用 float.NaN != double.NaN?

为什么float.NaN!=double.NaN?而float.PositiveInfinity==double.PositiveInfinity和float.NegativeInfinity==double.NegativeInfinity相等。示例:boolPosInfinity=(float.PositiveInfinity==double.PositiveInfinity);//trueboolNegInfinity=(float.NegativeInfinity==double.NegativeInfinity);//trueboolisNanEqual=(float.NaN

c# - 为什么在 C# 中使用 float.NaN != double.NaN?

为什么float.NaN!=double.NaN?而float.PositiveInfinity==double.PositiveInfinity和float.NegativeInfinity==double.NegativeInfinity相等。示例:boolPosInfinity=(float.PositiveInfinity==double.PositiveInfinity);//trueboolNegInfinity=(float.NegativeInfinity==double.NegativeInfinity);//trueboolisNanEqual=(float.NaN

c# - 与 Double.NaN 相等

我有以下代码...if(Price_Foreign!=Double.NaN){output.Append(spacer);output.Append(String.Format("{0,-10:C}USD",Price_Foreign));}哪些输出:NaNUSD什么给了?我正在使用Double.NaN来指示该值不存在,不应输出。 最佳答案 也许您正在寻找IsNaN静态函数?尝试这样的事情:if(!Double.IsNaN(Price_Foreign)){output.Append(spacer);output.Append(Str

c# - 与 Double.NaN 相等

我有以下代码...if(Price_Foreign!=Double.NaN){output.Append(spacer);output.Append(String.Format("{0,-10:C}USD",Price_Foreign));}哪些输出:NaNUSD什么给了?我正在使用Double.NaN来指示该值不存在,不应输出。 最佳答案 也许您正在寻找IsNaN静态函数?尝试这样的事情:if(!Double.IsNaN(Price_Foreign)){output.Append(spacer);output.Append(Str

c# - 检查 Double 是否为 "NaN"的最短方法

当以Double.PositiveInfinity作为参数调用Double.IsNaN()时,结果为false。这违背了我的直觉,因为无穷大不是数字。显然,“NaN”仅以.NET中的常量形式存在,这是IEEE标准描述的还是自定义实现细节?是否有比以下方法更短的方法来检查Double是否为“NaN”:(Double.IsNaN(d)||Double.IsPositiveInfinity(d)||Double.IsNegativeInfinity(d))或(Double.IsNaN(d)||Double.IsInfinity(d)) 最佳答案

c# - 检查 Double 是否为 "NaN"的最短方法

当以Double.PositiveInfinity作为参数调用Double.IsNaN()时,结果为false。这违背了我的直觉,因为无穷大不是数字。显然,“NaN”仅以.NET中的常量形式存在,这是IEEE标准描述的还是自定义实现细节?是否有比以下方法更短的方法来检查Double是否为“NaN”:(Double.IsNaN(d)||Double.IsPositiveInfinity(d)||Double.IsNegativeInfinity(d))或(Double.IsNaN(d)||Double.IsInfinity(d)) 最佳答案

c# - 为什么 NaN(不是数字)仅适用于 double ?

我有一个包含两个可为null的小数属性的业务类。第三个属性返回其他两个属性相乘的结果。如果HasValue对于两个可为null的类型都为真,则我乘以并返回结果。如果一个或两个属性为null,我有几个返回值选项:返回0抛出异常返回一个魔数(MagicNumber)(-1)返回小数?(编辑——见评论)我认为我的选择之一是返回NaN,但我发现这只适用于double类型。这是为什么?郑重声明,在这种情况下返回0最有意义,这就是我打算做的,除非有人有更好的建议。 最佳答案 .NET中的整数类型使用二进制补码系统进行表示。虽然他们可以为特殊值保

c# - 为什么 NaN(不是数字)仅适用于 double ?

我有一个包含两个可为null的小数属性的业务类。第三个属性返回其他两个属性相乘的结果。如果HasValue对于两个可为null的类型都为真,则我乘以并返回结果。如果一个或两个属性为null,我有几个返回值选项:返回0抛出异常返回一个魔数(MagicNumber)(-1)返回小数?(编辑——见评论)我认为我的选择之一是返回NaN,但我发现这只适用于double类型。这是为什么?郑重声明,在这种情况下返回0最有意义,这就是我打算做的,除非有人有更好的建议。 最佳答案 .NET中的整数类型使用二进制补码系统进行表示。虽然他们可以为特殊值保

在python中怎么 判断一个值是否为Nan

在Python中,可以使用math.isnan()或者numpy.isnan()来判断一个值是否为NaN。示例代码如下:importmathimportnumpyasnp#判断是否为NaNx=float('nan')print(math.isnan(x))#输出True#使用numpy判断是否为NaNarr=np.array([1.0,2.0,float('nan'),4.0])print(np.isnan(arr))#输出[FalseFalseTrueFalse]在上面的代码中,我们首先使用float(‘nan’)创建了一个NaN值,并使用math.isnan()判断它是否为NaN。另外,如