为什么浮点型/双精度型的MinValue/MaxValue不能放入十进制类型中?
为什么浮点型/双精度型的MinValue/MaxValue不能放入十进制类型中?
考虑以下代码:
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 中呢?
admin 更改状态以发布 2023年5月21日
正如IsakGo指出的那样,decimal
比float
或double
的范围更窄。这是因为decimal
的精度比float
或double
高得多。这就是为什么在金融应用中decimal
被使用得最多,而不是float
或double
的原因。
由于它具有高精度,decimal
的范围更窄。您可以在此处了解更多信息:https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/floating-point-numeric-types