Ruby:
数値の丸め処理
方法:
# 基本的な丸め
puts 3.14159.round # => 3
puts 2.6.round # => 3
# 精度の指定
puts 3.14159.round(2) # => 3.14
puts 2.675.round(2) # => 2.68
# 切り捨て
puts 2.9.floor # => 2
# 切り上げ
puts 2.1.ceil # => 3
# ゼロに向かって丸め
puts -2.9.round # => -3
puts -2.9.truncate # => -2
サンプル出力:
3
3
3.14
2.68
2
3
-3
-2
詳細な解説
数値の丸めは新しいことではありません。人間は何世紀にもわたり、計算を容易にするためや、彼らの道具の限界内で作業するために数字を丸めてきました。Rubyにおけるround
メソッドは多様で、デフォルトで最も近い整数に丸めることも、指定された小数点以下の桁に丸めることもできます。
round
の代わりとなるメソッドには、常に値を切り下げるfloor
と、常に値を切り上げるceil
があります。小数点以下を単に切り捨てたい場合はtruncate
を使用します。
歴史的に見て、コンピュータにおいては、浮動小数点算術の固有の不正確さに対処する際に、丸めが重要になります。Rubyはほとんどの言語と同様に、浮動小数点数に関してIEEE 754標準に従っているため、プログラマーは大抵、丸めを予測し、信頼することができます。
ただし、もっと多くのことがあります。たとえば、バンカーズラウンディング(別名偶数への丸め)のような概念は、round
メソッドがデフォルトで提供していないため、Ruby開発者が手動で実装する必要があるかもしれません。
関連項目
- Floatsの
round
メソッドについてのRubyドキュメント。 - 浮動小数点数算術のIEEE標準 (IEEE 754)。
- 浮動小数点精度を理解する、コンピュータが小数をどのように扱うかについての深い洞察。