■ オーバーフローエラー

[Visual Basic Q & A 掲示板] [過去ログの一覧]


じゃき 2007/12/26(水) 09:39:15
Private Sub Command1_Click()
Dim x As Double
Dim z As Double

x = 2147520000#

z = x \ 300

End Sub


型の許容範囲なのに、
z = x \ 300
でエラーが発生します。

なぜですか?
また、回避策を教えてください。

じゃき  2007/12/26(水) 09:43:55
z = x mod 300 とした時も同様です。

YuO [E-Mail] 2007/12/26(水) 10:06:24
ヘルプをちゃんと読みましょう。

VS6.0 MSDNライブラリより
> \ 演算子
(略)
> 除算を実行する前に、数式はバイト型 (Byte)、整数型 (Integer)、または長整数型 (Long) の式に丸められます。

2147520000は上記の最大の型であるLong型の範囲外ですから,当然エラーになります。

じゃき   2007/12/26(水) 10:55:28
回避策はないのでしょうか?

ガッ 2007/12/26(水) 11:24:25 <初心者>
何を解決するつもりですか?
まずはそれから書いてください.

ジャキ 2007/12/26(水) 12:45:01
エラーを回避する方法で、計算したいです。

大吉末吉 2007/12/26(水) 14:51:03 <中級者>
> エラーを回避する方法
「回避する方法」と言うのが、
『「\演算子」や「Mod演算子」を使った方法』なら、無理なのでは・・・

「\演算子」や「Mod演算子」の使用はあきらめて、
自前で(エラーにならないような)商・剰余の計算プログラムを作るとかしないと・・・

例えば、こんな関数を用意するとか・・・
--------------------------------------------------------------
Function Amari(ByVal a As Variant, ByVal b As Variant) As Variant
    Dim c As Variant
    Dim c2 As Variant
    Dim b2 As Variant

    c = CDec(a)
    b2 = CCur(b)
    c2 = Fix(c / b2)
    Amari = c - c2 * b2

End Function
------------------------------------------------------------------

じゃき 2007/12/27(木) 09:05:37
[[解決]]

ありがとう

毎週金曜日はポイント最大3倍!さらに4倍のチャンスも!

Programming Library