![](/img/trans.png)
[英]Why does (float.MaxValue / float.MinValue) evaluate to Infinity?
[英]Why can't float/double MinValue/MaxValue fit inside a decimal?
考虑以下代码:
float value = float.MinValue;
decimal dec = (decimal) value;
未处理的异常。 System.OverflowException:对于 Decimal,值太大或太小。
这同样适用于float.MinValue
、 float.MaxValue
、 double.MinValue
和double.MaxValue
。
如果float
是 32 位而double
是 64 位,为什么它们的最小值/最大值不适合 128 位的decimal
?
原因是deciaml
比float
或double
窄。
// decimal.MaxValue
79228162514264337593543950335
// decimal.MinValue
-79228162514264337593543950335
// float.MaxValue
3.402823E+38
// float.MinValue
-3.402823E+38
// double.MaxValue
1.79769313486232E+308
// double.MinValue
-1.79769313486232E+308
正如 IsakGo 指出的那样, decimal
比float
或double
窄。 这是因为decimal
比float
或double
具有更高的精度。 这就是为什么在金融应用程序中最常使用decimal
而不是float
或double
精度的原因。
由于它具有精度, decimal
的范围更窄。 您可以在此处阅读更多相关信息: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/floating-point-numeric-types
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.