【发布时间】:2012-05-16 08:21:32
【问题描述】:
(在尝试分析 decimal 的工作原理时)&& 在阅读 @jonskeet article 并看到 msdn 并思考了过去 4 小时后,
我有一些问题:
在this link 他们说的很简单:
1.5 x 10^2 有2 有效数字
1.50 x 10^2 具有 3 有效数字。
1.500 x 10^2 有 4 有效数字等...
好的……我们明白了。
来自 jon 的文章:
sign * mantissa / 10^exponent
像往常一样,符号只有一位,但有 96 位 尾数和5位指数
^ _ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^___ ^^^^^
1 _ 96 5
好的
so max mantiss val = 2^96-1 = 79228162514264337593543950335 即:7.9228162514264*10^28 (根据我的 iphone...无法在 windows calc 中看到指数表示)
注意:
7.9228162514264*10^28 有 14 个有效数字(根据上面的例子)
现在指数中 5 位的部分无关紧要,因为它在 分母 - 所以我需要最小 val 即 2^0
问题 #1:
msdn 说:28-29 significant digits
但根据我的样本(1.500 x 10^2 有 4 有效数字),他们有 2 个有效数字,即7.9(7 和 9)。
如果 msdn 会写:
±79228162514264337593543950335 × 10^0
我会理解这一点,因为所有有效数字都在表达式中。
为什么他们写的是 28-29 而显示的是 2?
问题 #2:
值 0.5 将如何显示十进制表示(尾数 && 指数)?
最大分母可以是2^32-1 --> 31
谢谢大家。
问题 #3:
1+96+5 = 102 位。
msdn 说:
decimal 关键字表示 128 位数据类型。
128-102 = 26
可以从文章中了解为什么没有使用那些 26 位
【问题讨论】: