[基礎][LotusScript]Variant型で数値計算したのに、オーバーフローエラーが出る理由は?
はじめに
「O008 オーバーフローしました」という、次のようなエラーメッセージを見たことはないでしょうか?
変数や定数など、各データの「桁数」「数値」には定められた許容値があります。許容値を超える大きさが使用された場合、オーバーフローエラーが発生します。この事例では、赤くなっているラインにあるいずれかの要素のデータ型が許容値を超えています。
今回エラーが発生したのは次の行です。
x = 2000*2000
一見すると、xのデータ型が不適切であったためにエラーになったように見えます。しかしxはVariant型で定義されています。Variant型はよく、「何でも入れられる」とか、「迷ったらVariant型にしましょう」と言われます。しかし、こんな些末な計算でエラーが出るのでは案外使い辛いです。
MicroSoftのVisual Basicのドキュメントに、Variant型の数値データの扱いは、次のように記載されています。エラーが出なさそうに見えます。
数値データは、 負の値は-1.797693134862315E308 から -4.94066E-324 まで、正の値は 4.94066E-324 から 1.797693134862315E308 までのいずれの整数値または実数値を使用できます。(https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/variant-data-type)
「E308」というのは、10の308乗のことです。従って「2,000*2,000 = 4,000,000」程度の数値ならば、桁数的には何の問題もなく扱えてよいはず。オーバーフローエラーが生じるのは不思議です。
今回の記事は、この理由を説明します。
原因調査1:類似の事例
ここから先は
1,579字
/
6画像
¥ 110
期間限定!PayPayで支払うと抽選でお得
サポートいただければ、記事をもっと充実することができます