1
0

More than 1 year has passed since last update.

Ruby:小数点を扱うとき

Posted at

アルゴリズムが動かなくて頭を抱えていたのですが、
"ceil"と"floor"を使い間違えていただけでした。
使うタイミングも多々あると思うので整理してみました。

少数点切り捨て

例
puts 1.1.floor 
puts 1.9.floor 
puts -1.1.floor 
puts -1.9.floor 

Image from Gyazo

小数点切り上げ

例
puts 1.1.ceil  
puts 1.9.ceil
puts -1.1.ceil
puts -1.9.ceil 

Image from Gyazo

四捨五入

例
puts 1.1.round 
puts 1.9.round 
puts -1.1.round 
puts -1.9.round 

Image from Gyazo

少数点を表示させる

例
puts 1.to_f
puts -1.to_f

Image from Gyazo

少数点を含む計算の誤差

Image from Gyazo
Image from Gyazo

対応方法

Image from Gyazo
Image from Gyazo

require 'bigdecimal'

"BigDecimal"というライブラリを使って計算していくらしいです。
"Decimal"は直訳だと"10進数"みたいです。
そして引数はStringでないとダメらしく、".to_s"も必要みたいです。
Image from Gyazo
リファレンス読んでもなかなか難しそう・・・・ 、詳しくは参考記事を参照ください
https://docs.ruby-lang.org/ja/latest/library/bigdecimal.html

参考記事
https://qiita.com/yusabana/items/fd4a0185c1f120403a74
https://qiita.com/jnchito/items/d0ef71b25732ad5a881c

まとめ

生前前から存在する電卓の偉大さを思い知りました・・・。
最後はデータサイエンス的な要素も少し感じましたが、前半部分はしっかりと活用してアルゴリズムを記述できるようにしておきたいです。

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0