그래서 내가 이렇게 보이는 기능이 있습니다 어떤 시점에서어떻게 든 변수를 변경할 수 있습니까?
float function(){
float x = SomeValue;
return x/SomeOtherValue;
}
,이 기능 오버 플로우와 정말 큰 음의 값을 반환합니다. 이 위치가 정확히 어디에서 발생했는지 추적하기 위해이 함수가 다음과 같이 보이도록 명령문을 추가했습니다.
! 물론, 나는 double을 사용하여 문제를 모두 해결했다. 하지만 필자가 그것을 요구할 때 함수가 제대로 작동하는 이유에 대해 궁금합니다. 이게 전형적인가요, 아니면 제가 누락 된 다른 곳의 버그가있을 수 있습니까?
(그것이 어떤 도움이 있다면, 플로트에 저장되어있는 값은 단지 정수 값, 그리고 특히 큰 하나가. 난 그냥 캐스팅을 피하기 위해 플로트에 넣어.)
http://gcc.gnu.org/wiki/x87note에서도 GCC 노트가 있습니다. 부동 소수점 계산을 비교하는 것은 사전 계산 값을 사용하지 않는 한 본질적으로 손상됩니다. – hazzen