decimal
可以表示的第二个最小值是多少?这是一个大于Decimal.MinValue
且小于decimal
可以表示的任何其他值的值。如何在C#中获取此值?谢谢!
答案 0 :(得分:8)
第二个最小值为Decimal.MinValue + 1
。
这可以从decimal
:
十进制数是一个由符号a组成的浮点值 数值,其中值中的每个数字范围从0到9,以及a 缩放因子,指示浮动小数点的位置 用于分隔数值的整数部分和小数部分。
十进制值的二进制表示由1位符号组成, 一个96位整数,和一个用于分割的缩放因子 96位整数,并指定它的小数部分。 缩放因子隐含地为数字10,提升为指数 范围从0到28.因此,一个二进制表示 十进制值的形式为(( - 2 ^ 96至2 ^ 96)/ 10 ^(0至28)),其中 -2 ^ 96-1等于MinValue,2 ^ 96-1等于MaxValue。
从上面我们可以推断,在合法值范围的极端边缘,缩放因子是1
(10到幂0),因此这是修改小数值时的最小量子。 / p>
<强> Live proof 强>
答案 1 :(得分:6)
According to MSDN,小数表示为((-2^96 to 2^96) / 10^(0 to 28))
,其中-2^96-1
等于MinValue
,2^96-1
等于MaxValue
,所以两位小数之间的最小差异是1/10^28
这种差异只能在小小数之间。通常,随着小数变大(无论符号),您将丢失小数点,直到没有小数点为止。
更新:正如评论中所指出的,你不能通过添加最小的十进制值(如上所述)来实际更改decimal.MinValue
。十进制对于符号具有1位,对于数字具有96位,并且具有用于划分数字的缩放因子(10 ^ x)。
为了获得如此大的负数,缩放因子的指数部分必须设置为0
( - > 10 ^ 0 == 1),因为将其设置为更高的值会导致要除以的数字,因此它会变小。
这意味着,对于这样的数字,最小的差异是1/10^0
或1
。
所以你正在寻找这个:
decimal.MinValue + 1m;
答案 2 :(得分:3)
http://msdn.microsoft.com/en-us/library/system.decimal.minvalue.aspx
Decimal.MinValue + 1
所以:-79,228,162,514,264,337,593,543,950,334。