小数点が入った比較をする際に
このような感じでしています。
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とかになります。
これの対処法ってどうすればよろしいでしょうか?
Rangeの精度がSingleと低いことがもっとも大きな問題なような気もしますが、たとえDouble型を使おうとも浮動小数点数の計算で誤差が出てしまうのはコンピュータの宿命だと思います。
鬼浜さんのケースの場合、ResPonsに10をかけた数値と整数のRange比較するなどするとお望みの判定が行われるかもしれません。
どうでしょ?
なるほど!!!
やってみます!
解決いたしましまいた。
ありがとうございました。
ツイート | ![]() |