Ответ
 
Опции вопроса Поиск в этом вопросе Опции просмотра
  #1  
Старый 01.10.2011, 02:59
Аватар для Guest
Guest
Вопрос
Сообщений: n/a
По умолчанию

Написал небольшую прогу-калькулятор, переводит из любой системы исчисления в любую (от 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 работает, но число то все равно ничего не имеет после запятой кроме нулей, откуда же такая колоссальная погрешность, и почему она проявляется именно в Релиз версии...
Ответить с цитированием
Ответ



Похожие вопросы
Тема Автор Раздел Ответов Последний вопрос или ответ
Перевод текста Guest Второй архив вопросов и ответов 1 21.03.2017 18:21
Системы исчислений. Guest Новые вопросы и ответы 2 0 31.12.2011 07:10
Перевод текста по Цигуну Guest Продолжение старого архива 0 01.10.2011 05:39



© www.otvetnemail.ru - Форум вопросов и ответов.