1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?