2011-10-21 5 views
3

두 가지 숫자의 차이가 10^-10보다 작은지 확인하고 싶습니다. 작동하지 않아서 std::cout << (double)(10^-10)을 사용하고 -4을 인쇄했습니다. 이것이 올바른 행동입니까? 실제로 어떻게 변경하여 0.0000000001이 될 수 있습니까?이유는 무엇입니까 (10^(- 10)) == -4

+5

지수를 원하면 ''(또는 방금 user786653에서 과학 표기법을 보았으므로)의 std :: pow를 사용하십시오. 당신이'10^(- 10)'에서 무엇을하는지는 bitwise XOR입니다. – birryree

+1

그래도 -4가 반환되는 이유가 있습니다. 12 월 10 일은 빈 00001010, dec -10 = 11110100이어야하며 10^(- 10)은 11111110 (-2)이되어야합니다. 2의 보수를 가정하지만 실제적으로 보편적입니다. – MSalters

답변

20

^은 C 또는 배타적입니다. 상수의 경우 scientific notation1e-10을 사용하고 싶을 것입니다. 다양한 지수의 경우 std::pow은 다른 해답과 마찬가지로 해답입니다.

+0

가장 간단하고 쉬운 솔루션입니다. –

+0

와우는 빨랐다! 에드가 말했듯이 내가 가장 간단하고 쉬운 것 같다. 모두에게 감사드립니다. – fabian789

+1

+1 과학적 표기법. 정수 리터럴이 수행 할 때 함수 호출을 포함 할 필요가 없습니다. –

3

^은 XOR입니다. 지수에 대한

사용 std::pow는 :

std::cout << std::pow(10.0, -10); 
5

^ 연산자는 비트 XOR 연산자입니다; 그것은 지수 계산을하지 않습니다. 대신 <cmath>pow 함수를 사용할 수 있습니다.

관련 문제