※ ChatGPTを利用し、要約された質問です(原文:VB2008での表示可能桁数について)
VB2008での表示可能桁数について
このQ&Aのポイント
VB2008EEで16進数と10進数の相互変換を行おうと思い、桁数の表示について不思議な現象が起きました。
VBでの16^16の結果は「18446744073709600000」となり、電卓での計算結果とは異なっています。
Decimalデータ型は「+/-79,228,162,514,264,337,593,543,950,335」まで表示可能なため、桁不足の問題はないはずです。対応策をご教示いただけると幸いです。
VB2008EEで16進数と10進数の相互変換を行おうと思い、とりあえず下記のようなコードを書いたのですが、
----------
Dim HOGE As Decimal
HOGE = 16 ^ 16
MsgBox(HOGE)
----------
出力の結果が「18446744073709600000」となります。
しかし、電卓で「16^16」を計算すると、
「18446744073709551616」となります。
VBでの16^16の結果=18446744073709600000
電卓での16^16の結果=18446744073709551616
ちなみに「16^15」までの結果はVBでも電卓でも同じでした。
「16^16」以上の結果は全て同じようにある程度の桁数で繰り上げされてしまっているようです。
ちなみに、データ型「Decimal」は「+/-79,228,162,514,264,337,593,543,950,335」まで
表示可能らしいので、特に桁不足という問題は無いはずだと思っています。
これの理由と、対応策のわかる方はいらっしゃいますでしょうか?
ちなみに、最終的に「16^20」くらいまで計算したいと考えています。
よろしくお願いいたします。
お礼
なるほど。そう言うことだったのですね。 変数の型はDecimalになっていたけれど、数字に「D」を付加してなかったため、扱いが(おそらく)Duble or Integerで扱われていたためのようですね。 問題が解決できそうです。 ありがとうございました(^^