十进制可以表示的第二个最小值是多少?

时间:2012-06-28 09:37:22

标签: c# .net decimal

decimal可以表示的第二个最小值是多少?这是一个大于Decimal.MinValue且小于decimal可以表示的任何其他值的值。如何在C#中获取此值?谢谢!

3 个答案:

答案 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等于MinValue2^96-1等于MaxValue,所以两位小数之间的最小差异是1/10^28 这种差异只能在小小数之间。通常,随着小数变大(无论符号),您将丢失小数点,直到没有小数点为止。

更新:正如评论中所指出的,你不能通过添加最小的十进制值(如上所述)来实际更改decimal.MinValue。十进制对于符号具有1位,对于数字具有96位,并且具有用于划分数字的缩放因子(10 ^ x)。

为了获得如此大的负数,缩放因子的指数部分必须设置为0( - > 10 ^ 0 == 1),因为将其设置为更高的值会导致要除以的数字,因此它会变小。

这意味着,对于这样的数字,最小的差异是1/10^01

所以你正在寻找这个:

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。