BigDecimal を小数点以下 2 桁に丸めたいのですが、round メソッドを使用すると、2 倍に丸められないようです。
BigDecimal.new('43382.0249').round(2).to_s('F').should == '43382.03'
しかし、代わりに出力が得られます: 43382.02
私は利用可能な他のすべての丸めモードも試しましROUND_UP
たが、仕事をしているようですが、他の丸めシナリオを台無しにします.
BigDecimal を小数点以下 2 桁に丸めたいのですが、round メソッドを使用すると、2 倍に丸められないようです。
BigDecimal.new('43382.0249').round(2).to_s('F').should == '43382.03'
しかし、代わりに出力が得られます: 43382.02
私は利用可能な他のすべての丸めモードも試しましROUND_UP
たが、仕事をしているようですが、他の丸めシナリオを台無しにします.
問題の数値は実際には .03 ではなく .02 に丸められるべきであるように思われます -- ここには実際の問題はないと思います。0.024 を 0.02 に丸める
43382.0249 を 42283.03 にしたい場合は、最初に 0.001 を追加します 670.1541 を 670.16 にしたい場合は、最初に 0.001 を追加します
切り捨て/切り上げ < 0.005、< 0.006 が必要なようです。
注意: 数値が負になる可能性がある場合は、-0.001 です。
とにかく遊んでみてください。ただし、一貫性がある限り、基本的な考え方は機能するはずです。