2016-09-01 6 views
0

は^ 5 3考える(3 ** 5または3 * 3 * 3 * 3 * 3)/どのようにRubyは次の操作を実行しないのはなぜ243なぜRuby Math.log関数が間違った値を返すのですか?

=:

n = 243 
Math.log(n,3) 
returns: 
4.999999999999999 

Math.log(243)/Math.log(3) 
returns: 
4.999999999999999 

3**Math.log(n,3) 
returns: 
242.99999999999977 

最後のものは実際に取得することを私。何かここで間違っているのですか?私は何かが欠けている?どちらも?

ありがとうございます!

+4

"私は何かが足りない" - 浮動小数点数学。 –

+0

任意精度の浮動小数点数が必要な場合は、 'flt' gem:' require 'flt/sugar'を使用できます。 D.math {log(3 ** 5,3)} ' しかしパフォーマンスが低下することに注意してください。 – michau

答えて

1

値が間違っていないのは、浮動小数点精度が限られているためです。

関連する問題