一連の計算を実行しているシステムがあり、何らかの理由で、0.07 が表示されるたびに 0.07000000000000001 と表示されます
浮動小数点数が近似値であることは十分承知していますが、次のようなコードを書いています。
number = '%.2f' % ( num1 - num2 )
number.to_f
それにもかかわらず、 0.07000000000000001 がコードに表示され続け、最終的に配列の並べ替えが失敗します。
sort! { |a,b| b <=> a } <-- b equals 0.07000000000000001 and a equals 0.08
これらの 2 つの数値を比較できないというエラーが発生します。これを修正する方法について何か考えはありますか?
アップデート
したがって、元の値が 0.07351923338974675 であるかのように見え、その時点で .round(2) を呼び出します。次に、Redis に一時的に保存してから、引き出します。計算を実行すると、最終的に 0.07000000000000001 と表示されます。別の解決策がない限り、ここでは整数比較が最適なように思えます。