Так у меня есть функция, которая выглядит примерно так:Может ли каким-то образом изменить переменные?
float function(){
float x = SomeValue;
return x/SomeOtherValue;
}
В какой-то момент, эта функция переполнения и возвращает действительно большое отрицательное значение. Для того, чтобы попытаться отследить именно там, где это происходило, я добавил COUT заявление, так что функция выглядит следующим образом:
float function(){
float x = SomeValue;
cout << x;
return x/SomeOtherValue;
}
и это сработало! Конечно, я решил проблему в целом, используя двойной. Но мне любопытно, почему функция работала правильно, когда я ее отключил. Является ли это типичным, или может быть ошибка где-то еще, что мне не хватает?
(Если это любая помощь, значение, хранящееся в поплавке только целое значение, и не особенно большой. Я просто положить его в поплавке, чтобы избежать отливки.)
Существует также примечание GCC для этого на http://gcc.gnu.org/wiki/x87note Из-за этого замечательного поведения сравнение вычислений с плавающей запятой также по своей сути нарушается, за исключением использования предварительно вычисленных значений. – hazzen 2008-09-08 19:57:12