投稿日 | : 2005/05/22(Sun) 09:05 |
投稿者 | : Say |
Eメール | : |
URL | : |
タイトル | : Re^8: VBのバグです |
> うちの環境が腐ってますかねぇ
挙動を確認しました。
うちの環境も腐ってるようです。
「開発環境初回起動時のみ」とそれ以外で動作が異なるというのがおもしろいですね。
テストにあたっては、毎回、開発環境から起動し直さないといけないのでちょっと面倒ですが・・・。
「初回動作と2回目以降の動作が異なる」というのは、明らかにバグと言っていいでしょう。
数値の型や数値の末尾が偶数か奇数かによっても異なるようですが、
「誤差」とか「仕様」とか呼ぶにはかなり無理があります。
テスト結果を見ると、Int()に小数を食わせたときの後始末に問題があるために
初回のみ正常値を返し、2回目以降は異常値を返しているようにみえます。
テスト結果(抜粋)
テスト1
Debug.Print Int(28.2 * 10) 282
Debug.Print Int(28.2 * 10) 281
テスト2
Debug.Print Int(CDbl(28.2) * 10) 282
Debug.Print Int(CDbl(28.2) * 10) 281
テスト3
Debug.Print Int(CSng(28.2) * 10) 282
Debug.Print Int(CSng(28.2) * 10) 282
テスト4
Debug.Print Int(CCur(28.2) * 10) 282
Debug.Print Int(CCur(28.2) * 10) 282
テスト5
Debug.Print Int(CDec(28.2) * 10) 282
Debug.Print Int(CDec(28.2) * 10) 282
テスト6
Debug.Print Int(28.1 * 10) 281
Debug.Print Int(28.1 * 10) 281
テスト7
Debug.Print Int(28.3 * 10) 283
Debug.Print Int(28.3 * 10) 283
テスト8
Debug.Print Int(28.4 * 10) 284
Debug.Print Int(28.4 * 10) 283
テスト9
Debug.Print Int(1) 1
Debug.Print Int(28.2 * 10) 282
Debug.Print Int(28.2 * 10) 281
テスト10
Debug.Print Int(1.2) 1
Debug.Print Int(28.2 * 10) 281
Debug.Print Int(28.2 * 10) 281
テスト11
Debug.Print Int(1#) 1
Debug.Print Int(28.2 * 10) 282
Debug.Print Int(28.2 * 10) 281
テスト12
Debug.Print Int(1.2!) 1
Debug.Print Int(28.2 * 10) 281
Debug.Print Int(28.2 * 10) 281
テスト13
Debug.Print Int(CCur(1.2)) 1
Debug.Print Int(28.2 * 10) 281
Debug.Print Int(28.2 * 10) 281
テスト14
Debug.Print Int(CDec(1.2)) 1
Debug.Print Int(28.2 * 10) 282
Debug.Print Int(28.2 * 10) 281