Roy*_*mir 10 .net c# clr decimal
(在尝试分析decimal
工作原理时)&&阅读@jonskeet文章 并看到msdn,并思考过去4个小时后,
我有一些问题:
在这个链接中,他们说的很简单:
1.5 x 10^2
有2
重要数字
1.50 x 10^2
有3
重要数字.
1.500 x 10^2
有4
重要数字等...
好的......我们明白了.
来自jon的文章:
sign * mantissa / 10^exponent
Run Code Online (Sandbox Code Playgroud)
像往常一样,符号只是一个位,但有96位尾数和5位指数
^ _ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^___ ^^^^^
1 _ 96 5
Run Code Online (Sandbox Code Playgroud)
好
所以max mantiss val = 2^96-1 = 79228162514264337593543950335
这是:( 7.9228162514264*10^28
根据我的iphone ...在windows calc中无法看到指数表示.)
注意 :
7.9228162514264*10^28
有14位有效数字(根据以上例子)
现在指数为5位的部分是无关紧要的,因为它在分母中 - 所以我需要最小值为2 ^ 0
问题#1:
msdn说:
28-29 significant digits
但根据我的样本(1.500 x 10^2
有4
重要数字),他们有2个 有效数字,即7.9
(7和9).
如果msdn写了:
±79228162514264337593543950335 × 10^0
Run Code Online (Sandbox Code Playgroud)
我会理解这一点,因为所有有效数字都在表达式中.
为什么他们写28-29但显示2?
问题2 :
如何为值0.5显示十进制表示(mantiss && exponent)?
最大分母可以 2^32-1 --> 31
多谢你们.
问题#3:
1 + 96 + 5 = 102位.
msdn说:
decimal关键字表示128位数据类型.
128-102 = 26
Run Code Online (Sandbox Code Playgroud)
可以从文章中了解为什么没有使用这26位
他们将范围给出了两位有效数字,但是分别指定了精度.这就是为什么范围被列为"近似范围".
decimal
0.5 的表示将是5的尾数和1的指数(其在反向意义上处理为正常,即它实际上为 -1).
归档时间: |
|
查看次数: |
607 次 |
最近记录: |