10

(在尝试分析其decimal工作原理时)&& 在阅读了@jonskeet 文章 并查看了 msdn并思考了过去 4 小时后, 我有一些问题:

这个链接中,他们说的很简单:

1.5 x 10^22重要数字

1.50 x 10^23重要数字。

1.500 x 10^24重要数字等...

好的...我们明白了。

来自乔恩的文章:

 sign * mantissa / 10^exponent

像往常一样,符号只有一位,但有 96 位尾数和 5 位指数

 ^ _ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^___ ^^^^^

 1 _                     96                         5

好的

所以 max mantiss val =2^96-1 = 79228162514264337593543950335这是:(7.9228162514264*10^28 根据我的 iphone ......在 windows calc 中看不到指数表示。)

注意 :

7.9228162514264*10^2814位有效数字(根据上面的例子)

现在指数中 5 位的部分无关紧要,因为它在分母中- 所以我需要 2^0 的 min val

问题 #1:

msdn 说:在此处输入图像描述 28-29 significant digits

但根据我的样本(1.500 x 10^24有效数字),他们有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 位

4

2 回答 2

7

他们只给出了两位有效数字的范围,但分别指定了精度。这就是该范围被列为“近似范围”的原因。

0.5的decimal表示形式是尾数为 5 和指数为 1(以与正常相反的方式处理,即它实际上是-1)。

于 2012-05-16T08:30:14.393 回答
3

为什么他们写 28-29 但显示 2?

为了可读性。它说“近似范围”,并且 7.9E28 比 79228162514264337593543950335(此处为 E0,而不是 E1)更具可读性。

值 0.5 将如何显示十进制表示(螳螂 && 指数)?

指数的范围是 -28...0,但是,它作为绝对值 0...28 存储(并通过构造函数参数接收)。

所以 0.5 将具有与 5 相同的尾数表示,指数为 -1(存储为 1)。

于 2012-05-16T08:41:30.113 回答