hakeの日記

Windows環境でプログラミングの勉強をしています。

BigDecimal

Rubyの勉強
可変長浮動小数点計算機能ライブラリ、任意の有効桁数を指定できる。
数字はStringで与える。下では結果もStringで取得。

require 'bigdecimal'
require 'bigdecimal/math'
include BigMath

def my_div(a, b)
 (BigDecimal(a.to_s,100) / BigDecimal(b.to_s)).to_s
end
def my_sqrt(a)
 sqrt(BigDecimal(a.to_s), 100).truncate(50).to_s("F")
end

p my_div(1,3)
# => "0.3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333E0"
p my_sqrt(2)
# => "1.41421356237309504880168872420969807856967187537694"
p Math::PI(50).to_s
# => "0.3141592653589793238462643383279502884197169399375105820974944592309049629352442819E1"