2016-09-01 4 views
0

3^5 (3 ** 5 또는 3 * 3 * 3 * 3 * 3)을 감안할 때 = 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

값이 잘못되지 않았습니다. 부동 소수점 정밀도가 제한되어 있기 때문입니다.

관련 문제