切り捨て方法が明らかに整数に浮動小数点を切り捨て切り捨てます。ここで何が起こっているのですか:フロートに
>> 14820.truncate
=> 14820
>> (148.2 * 100)
=> 14820.0
>> 14820.0.truncate
=> 14820
>> (148.2 * 100).truncate
=> 14819
なぜ最後の計算出力14820も表示されません。 truncate
に関連していない
切り捨て方法が明らかに整数に浮動小数点を切り捨て切り捨てます。ここで何が起こっているのですか:フロートに
>> 14820.truncate
=> 14820
>> (148.2 * 100)
=> 14820.0
>> 14820.0.truncate
=> 14820
>> (148.2 * 100).truncate
=> 14819
なぜ最後の計算出力14820も表示されません。 truncate
に関連していない
浮動小数点の丸めエラー、。例えば。これは
(148.2 * 100) < 14820
それはtrue
を返してみてください。 148.2
が浮動小数点数で正確にを表現することができないので、比喩的に言えば、あなたは、数148.199999999
代わりの148.2
を取得します。
148.2 * 100
の結果が正確に14820そうではなく、むしろによる浮動小数点エラーにその値よりわずかに小さいものです。したがって、それはあなたがこれで値を見ることができます14819.
に切り捨てになります。
>sprintf("%.19f", 148.2*100)
=> "14819.9999999999981810106"
として、これは小数点丸めエラーが浮いている、上記と述べました。私は、RubyがBUITインしているという欠点なしに、合理的な画分を表すことができ、クラスRational、追加しますので、あなたはそれを使用することをお勧めします。
あなたは丸め代わりの切り捨てと考えたことがありますか?