Просмотр сообщений
|
Страниц: 1 2 [3] 4 5 ... 137
|
32
|
Программирование / С/C++ / Re: MSVC 2015 чудит: float -> double
|
: Июнь 27, 2018, 14:24
|
повторяемость 100%, это не рандом. Вывод в поток верен, т.к. в более полном коде из проекта я ещё сравниваю полученное double значение с нужным мне, и первый double проходит проверку, а второй - нет. На release и release+debug symbols работает одинаково неправильно. Я подозреваю, что проблема с оптимизацией RVO и внутренним представлением float. На 64-бит не воспроизводится вероятно потому, что в 64-бит ошибки float меньше.
|
|
|
33
|
Программирование / С/C++ / MSVC 2015 чудит: float -> double
|
: Июнь 27, 2018, 12:22
|
На 32-битной версии MSVC и Qt 5.9.2 наблюдается такой интересный баг... В 64-битной версии такого нет. Коротко:C++ (Qt) float f1 = QVector2D::dotProduct(v1,v2); // возвращает float double d1 = f1; double d2 = QVector2D::dotProduct(v1,v2); // повторяем
Результат: Значения d1 и d2 различаются после пятнадцатого знака после запятой, а именно: d1 = 1.00000000000000000000 d2 = 1.00000000000000355271. Какая-то сумасшедшая оптимизация? Никаких своих флагов в .pro файл я не добавлял. Подлиннее:C++ (Qt) #include <QtCore> #include <QtGui> int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); QTextStream ts(stdout, QIODevice::WriteOnly); QVector2D v1(8.10837e-09, -1); QVector2D v2(4.45843e-07, -1); float f1 = QVector2D::dotProduct(v1,v2); double d1 = f1; double d2 = QVector2D::dotProduct(v1,v2); ts.setRealNumberNotation(QTextStream::FixedNotation); ts.setRealNumberPrecision(20); ts << v1.x() << " " << v1.y() << " " << v2.x() << " " << v2.y() << " " << endl << f1 << " " << d1 << " " << d2 << endl; ts.flush(); return 0; }
Выхлоп: 0.00000000810836997545 -1.00000000000000000000 0.00000044584299985218 -1.00000000000000000000 1.00000000000000000000 1.00000000000000000000 1.00000000000000355271 <--- f, d1 и d2
Проверьте пожалуйста на MSVC 2017 и MSVC 2013 в 32-битной версии. Какие есть гипотезы?
|
|
|
34
|
Разное / Говорилка / Re: Поплохело виндоус
|
: Июнь 22, 2018, 18:50
|
имхо, видеокарта либо проц перегреваются. был подобный опыт...
Похоже проц! Снял, смазал по новой, пока что работает нормально. А я уж что только не думал - SATA массив, и северный мост, и память...
|
|
|
38
|
Разное / Говорилка / Re: Поплохело виндоус
|
: Июнь 15, 2018, 10:22
|
Да у вас главная проблема это винда! А по теме, советую для начала запустить полную проверку диска с проверкой секторов.
Мне даже больше интересно что это за урезанный режим, в котором всё работает нормально
|
|
|
39
|
Разное / Говорилка / Re: Поплохело виндоус
|
: Июнь 14, 2018, 15:06
|
ещё вспухшие конденсаторы на материнской карте могут быть причиной
визуально материнка целая. Ещё и почистил на всякий случай - не помогло
|
|
|
40
|
Разное / Говорилка / Поплохело виндоус
|
: Июнь 13, 2018, 19:21
|
Привет. Система - Windows 7 64-bit. Начались спонтанные перезагрузки и синие экраны. Синие экраны в совершенно разных местах, разных драйверах, то есть никакой закономерности нет. Планки памяти менял/убирал как мог - ноль эффекта. Думаю не память. Причём заметил, что после очередного синего экрана винда загружается в каком-то урезанном режиме (хотя выбирад "Обычная загрузка)", где доступно только половина памяти, и очевидно, урезаны какие-то другие фичи. В этом урезанном режиме всё работает нормально! Что это за режим такой?
Если из него делаю перезагрузку, то винда грузится в "полном" режиме со всей доступной памятью, но жди синего экрана!
|
|
|
41
|
Qt / Работа с сетью / Re: Как скачать файл через запрос к php
|
: Июнь 11, 2018, 22:25
|
>Пробую QNetworkAccessManager гетом и тд, но скачивается именно php файл
такого быть не должно. Вероятно неправильно настроен сервер. PHP генерит страницы, и наружу должен отдаваться HTML и JS, а никак не сам PHP.
|
|
|
42
|
Qt / Установка, сборка, отладка, тестирование / Re: установка Qt на Debian(новичек)
|
: Май 30, 2018, 00:22
|
а зачем тебе это всё? Ты не понимаешь базовых основ, что ты собрался делать с Qt Creator? Начни с базовых основ Linux. С команд, установки пакетов, запуска программ, описания графической системы. В Ubuntu неплохая документация. Многое подходит и для Debian. То чего там нет ищется в гугле на раз-два.
|
|
|
43
|
Qt / Работа с сетью / Re: Скороть работы QNetworkAccessManager
|
: Май 21, 2018, 16:42
|
Ты уверен что проблема НЕ в твоей программе? Для меня очевидно, что при малейшем баге в логике программы идёт накопление ошибки, поэтому со временем и начинает замедляться. Это может быть всё что угодно - "забытый" указатель, лишние "да ладно и так сойдёт" строки кода и т.п.
|
|
|
44
|
Qt / Вопросы новичков / Re: ПРОСТО ПО-МО-ГИ-ТЕ! Qt Linux usb-cdc
|
: Май 10, 2018, 22:37
|
А как именно он должен работать? Я когда-то работал со сканерами карт, они же вроде работают как клавиатуры, посылая обычный клавиатурный ввод. Мой сканер я просто подключил к Убунте, открыл leafpad, провёл картой и получил текст.
|
|
|
45
|
Qt / Общие вопросы / Re: QProcess и консольное приложение
|
: Апрель 23, 2018, 22:52
|
Я уже говорил тебе,что такое безумие,а? Безумие - это точное повторение одного и того же действия. Раз за разом, в надежде на изменение. Налицо полное непонимание того, что ты делаешь: 1) скармливаешь сразу все файлы одной строкой для QProcess::start(). Процесс sox, как я уже писал, попытается открыть файл с именем "track01.wav track02.wav Sometrack03.wav", которого естественно нет, и проваливается 2) пытаешься писать в stdin этого процесса с помощью QProcess::write(), хотя sox поддерживает режим записи через stdin совсем по-другому, через спецификацию "-" файла, о чём написано в хелпе -h. Естественно, это не работает 3) скармливаешь Qt-шные пути "D://FolderSox//sox_14_4_2//track01.wav" программе прямо в stdin, хотя она явно не в курсе что такое "//" Предвижу вопрос типа хватит умничать, просто напиши решение. Пожалуйста, думаю смысл понятен: C++ (Qt) int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); QProcess process; QStringList strList = { "F:/chimes.wav", "F:/chord.wav", "F:/result.wav" }; process.start("F:/sox/sox", strList); if(!process.waitForStarted()) { return 1; } if(!process.waitForFinished()) { return 2; } return 0; }
Входные файлы - два виндовых wav звука на моём диске F. Выход - result.wav также на моём диске F. Это всё ещё можно сократить ещё больше через QProcess::execute().
|
|
|
|
|