Excelの有効桁数

Excelて表「計算」ソフトだから数字の扱い問題なくこなしてくれると思っちゃいますよね。

でも意外なところで正しく数字を扱えなくなります。

有効桁数

Excelは数字を数字として扱える(計算ができる)桁数に限界があります。

この状態で右端に「6」を追加すると
f:id:ExcelLover:20180725120922j:plain

あれ?「0」と表示されました。
f:id:ExcelLover:20180725120937j:plain
※6と入力した直後は指数表記されます

もちろん6以外の数字を入れても同じように0と表示されてしまいます。
(※切り捨て0表示)

VBEでも同じように入力すると

Sub test()
     Debug.Print 12345.6789012345
     Debug.Print 12345.6789012346
End Sub

入力した6が削除されて元々5だった右端の数字が6に変わりました。
(※VBEは16桁目を4以下切捨て5以上は繰り上げ表示)

これはExcelで数字として扱える有効桁数が15桁までとなっているためです。

https://support.microsoft.com/ja-jp/help/269370/last-digits-are-changed-to-zeroes-when-you-type-long-numbers-in-cells

 回避策(?)

数字として扱える状態で16桁以上を正確に表示する方法は無い(と思います)です。

計算はできなくても見た目だけでも表示したい場合は文字列にすれば可能です。

まとめ

金額の計算として使うなら100兆円単位までは扱えるので、恐らく問題が発生する場面には遭遇しないと思います。

・15桁の制限が整数部分.小数部分合わせての制限。

Excelは15桁以上は切り捨て0表示、VBEは16桁目を4以下切捨て5以上は繰り上げ表示

・文字列にすれば表示だけは可能

以上3点を抑えておけばトラブルは回避できるのではないでしょうか。

まとめ(おまけ

VBA変数の型にSingle・Doubleていうのがあるけれども、

この2つの範囲て優に15桁を超えてるんだけど、Excelの15桁の制限と矛盾してないのかな…