Rubyの消費税計算の話
最初、金額に消費税かけて切り上げすればOKでしょと思って
(price * tax).ceil
をしたところ
(400 * 1.1).ceil
の結果は、
441
となります。
くそ、、、
こんな親切な数字なのになんで 440 にならない、、、
くそ、、、
で実際
400 * 1.1
すると
440.00000000000006
になります。
僕には何に必要になるかわからない小数点以下の大量の 0 と 挙句の果てには 6 まで付いてきます。
その 6 を切り上げちゃってるので、結果 (400 * 1.1).ceil
は
441
になります。
計算方法
結果 僕が行き着いた計算方法がこちら
((price * tax).round(2)).ceil
基本的に、%なので 小数点第2位までを考えるため 小数点第3位を一応 四捨五入して、残った少数点第2位までを切り上げです。
(基本少小数点第3位は0になると思っています )
400円の 10% は
400 * 1.1 = 440.00 => 440
401円 の8%は
401 * 1.08 = 433.08 => 434
になります。
まとめ
切り上げ
((price * tax).round(2)).ceil
四捨五入
((price * tax).round(2)).round
切り捨て
(price * tax).floor
関連記事
プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで (Software Design plusシリーズ)
- 作者: 伊藤淳一
- 出版社/メーカー: 技術評論社
- 発売日: 2017/11/25
- メディア: 大型本
- この商品を含むブログを見る