什么是一个可以代表的第二个最小值decimal?这是大于Decimal.MinValue和小于decimal可以表示的任何其他值的值.如何在C#中获取此值?谢谢!
第二个最小值是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添加最小的十进制值来实际改变(如上所述).十进制对于符号具有1位,对于数字具有96位,并且具有用于划分数字的缩放因子(10 ^ x).
为了获得如此大的负数,缩放因子的指数部分必须设置为0( - > 10 ^ 0 == 1),因为将其设置为更高的值会导致数字除以该值,从而它会变小.
这意味着,对于这样的数字,最小的差异将是1/10^0,或1.
所以你正在寻找这个:
decimal.MinValue + 1m;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1654 次 |
| 最近记录: |