オーバーフローエラー

解決


じゃき  2007-12-26 18:39:15  No: 99984

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 18:43:55  No: 99985

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


YuO  2007-12-26 19:06:24  No: 99986

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

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

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


じゃき  2007-12-26 19:55:28  No: 99987

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


ガッ  2007-12-26 20:24:25  No: 99988

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


ジャキ  2007-12-26 21:45:01  No: 99989

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


大吉末吉  2007-12-26 23:51:03  No: 99990

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

ありがとう


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加