Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


47600 / 76738 ←次へ | 前へ→

【34089】Re:バリアントでもオーバーフロー
発言  やっちん  - 06/1/26(木) 10:50 -

引用なし
パスワード
   ▼よっちゃん さん:
ichinoseさんの説明にあるように適当な型のメモリーに一度格納されます。
金2 = 10000 * 10 の場合
10000・・・Integer
10・・・Integer
自分でIntegerの変数を宣言して10000と10を入れて計算するのと変わりません。
どちらもIntegerなので計算結果もIntegerの型のメモリに入りその表現できる数値の範囲を超えているのでオーバーフローになります。
金2への代入はこの後になるので金2をVariantやLong型で宣言していてもオーバーフローは起こります。
つまり今回のオーバーフローは式の右側で起こっているのです。

次の場合
金2 = 10000 * 10&
10000・・・Integer
10&・・・Long (&を付けるとLong型の数値として扱われます)
IntegrよりLongの型の方が表現できる数値の範囲が大きいのでLongで計算され
オーバーフローになりません。

同様に
金2 = 1E+15 * 10
1E+15・・・Double
10・・・Integer
IntegrよりDoubleの型の方が表現できる数値の範囲が大きいのでDoubleで計算され
オーバーフローになりません。

次の式はオーバーフローになります。
金2 = (30000 + 30000) * 10&
30000・・・Integer
30000・・・Integer
10&・・・Long
()の中が先に計算されるのでIntegerで計算されその時点でオーバーフローです。

こんな説明で大丈夫でしょうか?(^^;
0 hits

【34060】バリアントでもオーバーフロー よっちゃん 06/1/25(水) 18:21 質問
【34064】Re:バリアントでもオーバーフロー inoue 06/1/25(水) 18:44 発言
【34078】Re:バリアントでもオーバーフロー よっちゃん 06/1/26(木) 4:07 質問
【34080】Re:バリアントでもオーバーフロー ichinose 06/1/26(木) 7:56 発言
【34082】Re:バリアントでもオーバーフロー やっちん 06/1/26(木) 8:06 回答
【34084】Re:バリアントでもオーバーフロー よっちゃん 06/1/26(木) 9:33 質問
【34089】Re:バリアントでもオーバーフロー やっちん 06/1/26(木) 10:50 発言
【34125】Re:バリアントでもオーバーフロー よっちゃん 06/1/27(金) 8:35 お礼

47600 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free