在下面的示例代码中,我除以零,当我使用调试器单步执行它时,(被除数/除数)产生无穷大或NaN(如果除数为零)。当我将此结果转换为long时,我会得到一个有效结果,通常类似于-9223372036854775808。为什么这个转换有效?为什么它不停止执行(例如抛出异常)而不是分配一个任意值?doubledivisor=0;doubledividend=7;longresult=(long)(dividend/divisor); 最佳答案 Whyisthiscastvalid?如果在编译时已知转换可能成功或总是成功,则转换是有效的。只有
在下面的示例代码中,我除以零,当我使用调试器单步执行它时,(被除数/除数)产生无穷大或NaN(如果除数为零)。当我将此结果转换为long时,我会得到一个有效结果,通常类似于-9223372036854775808。为什么这个转换有效?为什么它不停止执行(例如抛出异常)而不是分配一个任意值?doubledivisor=0;doubledividend=7;longresult=(long)(dividend/divisor); 最佳答案 Whyisthiscastvalid?如果在编译时已知转换可能成功或总是成功,则转换是有效的。只有
为什么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
为什么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
我有以下代码...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
我有以下代码...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
当以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)) 最佳答案
当以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)) 最佳答案
我在.NETSourceCode中找到了这个:它声称比System.Double.IsNaN快100倍。是否有理由不使用此函数而不是System.Double.IsNaN?[StructLayout(LayoutKind.Explicit)]privatestructNanUnion{[FieldOffset(0)]internaldoubleDoubleValue;[FieldOffset(0)]internalUInt64UintValue;}//ThestandardCLRdouble.IsNaN()functionisapproximately100timesslowertha
我在.NETSourceCode中找到了这个:它声称比System.Double.IsNaN快100倍。是否有理由不使用此函数而不是System.Double.IsNaN?[StructLayout(LayoutKind.Explicit)]privatestructNanUnion{[FieldOffset(0)]internaldoubleDoubleValue;[FieldOffset(0)]internalUInt64UintValue;}//ThestandardCLRdouble.IsNaN()functionisapproximately100timesslowertha