2013-12-18 1 views
1

부동 소수점 숫자로 작업하는 동안 이상한 오류가 발생했습니다. 다음 숫자의 log10 ("math.h")을 계산하려고합니다.부동 소수점 숫자 -2.584877722073e-33에 log10()을 사용하는 중 오류가 발생했습니다.

-0.000000000000000000000000000000002584877722073 == -2.584877722073e-33

계속 충돌합니다. 유효한 플로트입니까? 내가 플로트 자체의 원시 데이터를 다루는 것을 다루고 있음을 인정한다.

나는 float에 대해 연구했는데, 이것은 NaN, Inf 또는 비정기적인 숫자가 아니기 때문에 필자는이를 이해했다.

1 | 00010010 | 10101101011111001000100

이 정밀도 숫자에 제한이 있습니까 : 바이너리가 잘못 아무것도 일치하지 않는 것? 문제의 원인은 무엇입니까?

+0

'이중'이라고해도 정확성이 좋지 않습니다. : P –

+0

@MohammadAliBaydoun :'double'은 17 자리수의 정밀도를 제공합니다 ... –

+0

@JoeZ Oh wait. 신경 쓰지 마. 나는 그게 의미있는 _ 자릿수임을 깨달았습니다. 오히려 창피하다. –

답변

5

음수의 로그를 계산할 수 없으며 실제 결과를 기대할 수 없습니다. 도메인 오류가 발생했습니다.

+0

와우, 고마워! 나는 그것을 보았어 야했다. .. – Codesmith

관련 문제