VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 2005/05/21(Sat) 16:33
投稿者ガッ
Eメール
URL
タイトルRe^6: VBのバグです

ノ<前にもどこかでこういう話題を見つけたのですが、毎回私の誤爆に終わっていますた。
 で、また気になったので少しテスツしてみますた。

'VB6標準EXE作成後、このコードを貼り付けて実行
Private Sub Form_Load()
    
    '問題点:Int(0.0282*10000)=<281|282>?
    Const v1        As Single = 0.0282!     '0.0282!
    Const v2        As Double = 0.0282      '0.0282#
    
    Debug.Print "TypeName(v1)="; TypeName(v1), "TypeName(v2)="; TypeName(
v2)
    'リテラルに問題があるかもしれないので、全てコピペ(orz
    Debug.Print "v1="; Int(v1), "v2="; Int(v2)
    Debug.Print "v1*1&="; Int(v1 * 1&), "v2*1&="; Int(v2 * 1&
amp;)
    Debug.Print "v1*2&="; Int(v1 * 2&), "v2*2&="; Int(v2 * 2&
amp;)
    Debug.Print "v1*10&="; Int(v1 * 10&), "v2*10&="; Int(v2 *
10&)
    Debug.Print "v1*100&="; Int(v1 * 100&), "v2*100&="; Int(v
2 * 100&)
    Debug.Print "v1*1000&="; Int(v1 * 1000&), "v2*1000&="; In
t(v2 * 1000&)
    Debug.Print "v1*10000&="; Int(v1 * 10000&), "v2*10000&=";
Int(v2 * 10000&)
    Debug.Print "v1*100000&="; Int(v1 * 100000), "v2*100000&="; I
nt(v2 * 100000)
    
End Sub

実行結果(イミディエイトウィンドウ)
TypeName(v1)=Single         TypeName(v2)=Double
v1= 0         v2= 0
v1*1&= 0      v2*1&= 0
v1*2&= 0      v2*2&= 0
v1*10&= 0     v2*10&= 0
v1*100&= 2    v2*100&= 2
v1*1000&= 28  v2*1000&= 28
v1*10000&= 282              v2*10000&= 281
v1*100000&= 2820            v2*100000&= 2819

家のPCだと、どうやら単純にSingleとDoubleの制度の違いのように思える。
&新しい検証方法示してすんません(orz


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -