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

投稿日: 2005/05/22(Sun) 23:07
投稿者Starfish
Eメール
URL
タイトルRe^2:

> >  VB6.0では、通貨型同士の除算は、結果は10進型になるとおもいます。
> 『Debug.Print TypeName(10@ / 1@)』は、「Double」を返しませんか?
> 少なくとも当方では、VB6 でも Office 2003 VBA でも Double になりますが……。
>
>
> > (ヘルプのキーワード 「/ (演算子)」)
> それは、下記のトピックの事かと思いましたが…具体的にはどの部分でしょうか。
> hhttp://www.microsoft.com/JAPAN/developer/library/Vbenlr98/vaoprdivide.htm

 通貨型同士の除算は、結果は10進型になるという思っていたので、「10 進型 (Decimal)
と他のデータ型を含む除算」にはいると読み違えたようです。どうもすみません。

 しかしながら、計算した結果が制度の悪い型になるというのは考えられません。

 『Debug.Print TypeName(10@ / 1@)』は、「Double」を返しますが、以下のコードを
実行してみると、c3=c5 とはならず、c3には通貨型の精度で値が表示されます。
不思議ですねぇ。

Private Sub Command1_Click()
Dim c1 As Currency
Dim c2 As Currency
Dim c3 As Currency
Dim d4 As Double
Dim c5 As Currency
Dim x As Currency
Dim i As Long

c1 = 922337203685465.5807@
x = 1.23
    
For i = 0 To 10
    c1 = c1 + 1
    c2 = (c1 / x)
    c3 = c2 * x
    d4 = (c1 / x)
    c5 = d4 * x
    Debug.Print c1, c3, c5
Next
    
End Sub


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

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

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