繰り返し処理

解決


鬼浜  2005-04-13 01:35:09  No: 120844

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

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-13 01:52:34  No: 120845

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

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

どうでしょ?


鬼浜  2005-04-13 02:04:41  No: 120846

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


鬼浜  2005-04-13 02:21:51  No: 120847

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


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加