|
▼八家九僧陀 さん:
0.9という実数値を Single型の変数に代入したばあいと、
Double型の変数に代入して計算したばあいとでは
前者では【桁落ち】が生じやすいので、
0.9 が 0.900000000000 として計算されていない
ということです。
比較検証するプロシージャをつくってみましたので、
お試しください:
'--------------------------------- 標準モジュール
Sub 端数が出る理由_Single()
Dim 年調給与額 As Long
Dim ritu_1 As Single
年調給与額 = Val("6835000")
ritu_1 = 0.9
Debug.Print
Debug.Print 年調給与額; " * "; ritu_1;
Debug.Print " <----"; TypeName(ritu_1); CDbl(ritu_1)
Debug.Print 年調給与額 * ritu_1
End Sub
Sub 端数が出る理由_Double()
Dim 年調給与額 As Long
Dim ritu_1 As Double
年調給与額 = Val("6835000")
ritu_1 = 0.9
Debug.Print
Debug.Print 年調給与額; " * "; ritu_1;
Debug.Print " <----"; TypeName(ritu_1); CDbl(ritu_1)
Debug.Print 年調給与額 * ritu_1
End Sub
'------------------------ イミディエイト・ウィンドウ
6835000 * 0.9 <----Single 0.899999976158142
6151499.8370409
6835000 * 0.9 <----Double 0.9
6151500
|
|