10

(どのように機能するかを分析しようとしている間decimal)&& @jonskeetの記事を読んでmsdn 見て、過去4時間考えた後、 いくつか質問があります:

このリンクでは、彼らは非常に単純なことを言っています:

1.5 x 10^22有効数字があります

1.50 x 10^23有効数字があります。

1.500 x 10^24有効数字などがあります...

わかりました...アイデアが浮かびます。

ジョンの記事から:

 sign * mantissa / 10^exponent

いつものように、符号は1ビットですが、96ビットの仮数と5ビットの指数があります。

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

 1 _                     96                         5

わかった

したがって、max mantiss val =2^96-1 = 79228162514264337593543950335これは:(7.9228162514264*10^28 私のiPhoneによると...Windows計算で指数表現を見ることができませんでした。)

知らせ :

7.9228162514264*10^2814の有効数字があります(上記の例による)

これで、指数が5ビットの部分は分母にあるため、無関係になります。したがって、最小値は2^0である必要があります。

質問1 :

msdnは言う:ここに画像の説明を入力してください 28-29 significant digits

しかし、私のサンプル(有効数字)に1.500 x 10^2よると、 42つ の有効数字7.9(7と9)があります。

msdnが書いたとしたら:

±79228162514264337593543950335 × 10^0

すべての有効数字が式に含まれているので、私はこれを理解します。

なぜ彼らは28-29と書くのに、2を表示するのですか?

質問2 :

値0.5の10進表現(カマキリ&&指数)はどのように表示されますか?

最大分母は2^32-1 --> 31

みんなありがとう。

質問#3:

1 + 96 + 5=102ビット。

msdnは言う:

10進数のキーワードは、128ビットのデータ型を示します。

128-102 = 26

それらの26ビットに使用法がない理由を記事から理解することができます

4

2 に答える 2

7

範囲は有効数字2桁までですが、精度は個別に指定されています。そのため、範囲は「おおよその範囲」として表示されます。

0.5のdecimal表現は、5の仮数と1の指数になります(これは、通常とは逆の意味で扱われます。つまり、実質的に-1です)。

于 2012-05-16T08:30:14.393 に答える
3

なぜ彼らは28-29と書くのに、2を表示するのですか?

読みやすさのために。「おおよその範囲」と表示され、7.9E28は79228162514264337593543950335(ここではE1ではなくE0)よりも読みやすくなっています。

値0.5の10進表現(カマキリ&&指数)はどのように表示されますか?

指数の範囲は-28...0ですが、絶対値0 ... 28として格納されます(コンストラクターパラメーターを介して受信されます)。

したがって、0.5は、指数が-1(1として格納)の5と同じ仮数表現になります。

于 2012-05-16T08:41:30.113 に答える