Написал небольшую прогу-калькулятор, переводит из любой системы исчисления в любую (от 2- до 36-ричной). Пока все работало в режиме Отладки ошибок не было, перевел в режим Релиз - программа ошибается на сложении двух целых чисел и ошибается на единицу. Вот участок кода, который ошибается:КодC++ (Qt)#include "qmath.h"...QString numeral = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";Q String t = "883";int v = 10;int decValue = 0;int len = t.length();for (int j = 0; j < len; j++){ decValue += numeral.indexOf(t.right(1)) * pow(v, j); t.chop(1);}В каждом цикле число считается верно: сначала 3, потом 80, потом 800, но все это дело складывается в 882. В чем загвоздка? Грешу конечно на pow(), все-таки она вся на double работает, но число то все равно ничего не имеет после запятой кроме нулей, откуда же такая колоссальная погрешность, и почему она проявляется именно в Релиз версии...
|