什么是第二个最低值,一个decimal
能代表什么呢? 也就是说这是比该值越大Decimal.MinValue
比一的任何其它值和较小的decimal
可以代表。 我怎样才能获得在C#中这个值? 谢谢!
Answer 1:
第二最小值是Decimal.MinValue + 1
。
这可以从文档中推断出decimal
:
十进制数是一个浮点值,它由一个符号,数字值,其中在所述值的每个数字范围从0到9的,以及指示浮动小数点的,所述整数和小数部分分离出来的位置的缩放因子的数值。
一个十进制值的二进制表示由一个1位的标志,96位整数,用来划分的96位整数,指定哪些它部分是小数的缩放因子的。 缩放因子是隐式地数目为10,升温至指数取值范围为0至28.因此,十进制值的二进制表示的形式为,((-2 ^ 96〜2 ^ 96)/ 10 ^(0至28)),其中-2 ^ 96-1等于MINVALUE,和2 ^ 96-1等于MaxValue的。
从上面我们可以推断,在法律值范围的极端边缘,缩放因子是1
(10到电力0),因此这是当一个十进制值被修改的最小量子。
现场的证明 。
Answer 2:
根据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;
Answer 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。