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