オーバーフローエラー

解決


じゃき  2007-12-26 09:39:15  No: 99984  IP: 192.*.*.*

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  No: 99985  IP: 192.*.*.*

z = x mod 300 とした時も同様です。

編集 削除
YuO  2007-12-26 10:06:24  No: 99986  IP: 192.*.*.*

ヘルプをちゃんと読みましょう。

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

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

編集 削除
じゃき  2007-12-26 10:55:28  No: 99987  IP: 192.*.*.*

回避策はないのでしょうか?

編集 削除
ガッ  2007-12-26 11:24:25  No: 99988  IP: 192.*.*.*

何を解決するつもりですか?
まずはそれから書いてください.

編集 削除
ジャキ  2007-12-26 12:45:01  No: 99989  IP: 192.*.*.*

エラーを回避する方法で、計算したいです。

編集 削除
大吉末吉  2007-12-26 14:51:03  No: 99990  IP: 192.*.*.*

> エラーを回避する方法
「回避する方法」と言うのが、
『「\演算子」や「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  No: 99991  IP: 192.*.*.*

ありがとう

編集 削除