2010-07-10 2 views
0

빈 수식 정밀도 수를 계산하는 좋은 방법은 무엇입니까? 이와 비슷하지만 더 효율적일까요?지수에 따른 빈 부동 소수점 수

x = 1; 
for i = 0,size-1 { // loop over number of bins 
    if (value > x) { 
     ++bin[i]; return; 
    } 
    x *= 0.1; 
} 
++bin[size-1]; // increment last bins 

는 내가 직접 frexp을 지수를 받고, 그를 사용하여 생각했다. 가치가 있습니까?

+0

빈 수를 입력하는 좋은 방법을 묻지 만 번호는 설명하지 않습니다. 모든 숫자가 0과 10 사이에 있지 않는 한 아래의 Tom의 대답은 좋은 해결책이 될 수 있습니다 ... 아마도 가장 좋은 해결책이 무엇인지 이해하는 데 도움이되는 이유를 설명 할 수 있습니다. – codekaizen

답변

1

내가 당신을 도움이 될 생각이 질문에 답변 해 드리겠습니다 :.

"숫자 X 감안할 때, X는 과학적 표기법으로 기록 된 지수가 무엇 예를 들어, x는 0.007 인 경우, 지수는 -3 (7x10^-3)입니다. "

그래서 x = a * 10^b, 1 < = a < 10. b를 해결합니다.

의 양쪽

  • 로그 (X) = 로그 (a * 10^b)
  • 로그 (X) = 로그 (a) + 로그 (10 로그 (베이스 (10))을 보자^b)
  • 로그 (X) = 로그 (A) + (B)
  • B = 로그 (X) - ((a)

지금 B는 정수이고, 0 < = 로그 로그인 W) < 1이므로 log (a)는 실제로 분수입니다. log (x)의 일부. 따라서, log (x)를 반올림하여 분수 부분을 삭제할 수 있습니다.

예상대로

  • B = 층 (로그 (X))는

는 X = 0.007, B = 층 (-2.15)는 -3 I는 C 코드하다고 생각 = 때 int b = (int) floor (log10 (x))

+0

이것은 매우 분명합니다. 나는 심지어 묻기에는 다소 어리 석습니다. – Anycorn