繁体   English   中英

为什么浮点/双精度 MinValue/MaxValue 不能放在小数内?

[英]Why can't float/double MinValue/MaxValue fit inside a decimal?

考虑以下代码:

float value = float.MinValue;
decimal dec = (decimal) value;

未处理的异常。 System.OverflowException:对于 Decimal,值太大或太小。

这同样适用于float.MinValuefloat.MaxValuedouble.MinValuedouble.MaxValue

如果float是 32 位而double是 64 位,为什么它们的最小值/最大值不适合 128 位的decimal

原因deciamlfloatdouble窄。

// 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 指出的那样, decimalfloatdouble窄。 这是因为decimalfloatdouble具有更高的精度。 这就是为什么在金融应用程序中最常使用decimal而不是floatdouble精度的原因。

由于它具有精度, 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM