繰り返し処理

解決


鬼浜  2005-04-12 16:35:09  No: 120844  IP: [192.*.*.*]

小数点が入った比較をする際に
このような感じでしています。

0〜10まで0.1刻みで比較していく

Dim g       As  Integer
Dim Range   As  Single
 
 g = 0      'カウンター
 Range = 0  'カウンター
 Do Until g = 99
    If ResPons > Range And ResPons <= Range + 0.1 Then
       Respons_Count(g) = Respons_Count(g) + 1
          Exit Do
    Else
      g = g + 1
      Range = Range + 0.1
    End If
 Loop
 
繰返し回数が増えるとRangeの値がおかしくなっていきます。
Range=3.99998とかになります。
これの対処法ってどうすればよろしいでしょうか?

編集 削除
GOUF  2005-04-12 16:52:34  No: 120845  IP: [192.*.*.*]

Rangeの精度がSingleと低いことがもっとも大きな問題なような気もしますが、たとえDouble型を使おうとも浮動小数点数の計算で誤差が出てしまうのはコンピュータの宿命だと思います。

鬼浜さんのケースの場合、ResPonsに10をかけた数値と整数のRange比較するなどするとお望みの判定が行われるかもしれません。

どうでしょ?

編集 削除
鬼浜  2005-04-12 17:04:41  No: 120846  IP: [192.*.*.*]

なるほど!!!
やってみます!

編集 削除
鬼浜  2005-04-12 17:21:51  No: 120847  IP: [192.*.*.*]

解決いたしましまいた。
ありがとうございました。

編集 削除