Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.71/120: Рейтинг темы: голосов - 120, средняя оценка - 4.71
 Аватар для KellyDink
6 / 6 / 0
Регистрация: 04.01.2012
Сообщений: 182
Записей в блоге: 44

Округление double до 2-х знаков

26.01.2018, 14:16. Показов 26024. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! я в отчаянии. как мне округлить double до 2-х точек?
я пробовала round(n*100)/100.0, пробовала round(n*100)/100 но в итоге получаются такие цифры -900.63999999999999. либо с 00000001 на конце? как мне избавиться от этого ненавистного хвоста?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.01.2018, 14:16
Ответы с готовыми решениями:

double округление с точность до N знаков
Добрый день, помогите пожалуста какую надо использовать функцию чтобы была возможность округлить значение числа double с точностью до N...

Visual Basic 2013 сложение чисел, округление до 2 знаков после запятой, отбрасывание знаков
Как сложить несколько чисел из TextBox, округлить их, отбросить знаки после запятой? показать результат в TextBox

Количество знаков после запятой double, Long double
Есть число большой точности A. A=-1.768573656315270993281 742915329544712934120053405549882 337511135282776553364635382011977 ...

31
 Аватар для KellyDink
6 / 6 / 0
Регистрация: 04.01.2012
Сообщений: 182
Записей в блоге: 44
01.02.2018, 16:26  [ТС]
Студворк — интернет-сервис помощи студентам
что из этого система исчисления, что число, а что математические знаки?
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
01.02.2018, 19:07
Система исчисления десятичная, знаки - возведение в степень. https://www.cyberforum.ru/cgi-bin/latex.cgi?15\cdot{10}^{3} и https://www.cyberforum.ru/cgi-bin/latex.cgi?x\cdot{2}^{y}

Добавлено через 4 минуты
Найти целые x и y, если x меньше 100 (например), чтобы эти два выражения стали равными.

P.S. https://www.cyberforum.ru/cgi-bin/latex.cgi?15 000 = 1875\cdot{2}^{3}, а поскольку 1875 на 2 не делится нацело, т.к. нечётное, то представить его в виде https://www.cyberforum.ru/cgi-bin/latex.cgi?x\cdot{2}^{y} можно только в том случае, если в x (мантису) можно будет вписать всё число 1875. Если нельзя, то дальше будет округление. То есть останется только, например, https://www.cyberforum.ru/cgi-bin/latex.cgi?58\cdot{2}^{8}, то есть 14848 вместо 15 000.
0
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,350
02.02.2018, 09:34
Цитата Сообщение от KellyDink Посмотреть сообщение
C++ (Qt)
1
round(a*100)/100,0;
я сначала писала всевозможные отдельные функции, но потом и правда поняла, что бесполезно. так что оставила это. у меня 12000 значений, где-то треть из них хвостатые.
Здесь мало экстрасенсов. Приведите не одну строчку, а весь ваш код, который некорректно работает. Откуда появляются 12000 значений и что вы с ними потом делаете. Как узнаёте, что треть из них хвостатые - при выводе на экран?

Приведите пример хоть одного "хвостатого" значения, которое не округляется.

Я счас сгенерирую 12000 случайных чисел double с "хвостами" - с многими цифрами после запятой, округлю их до 2-х цифр после запятой и выведу на экран. Интуиция мне подсказывает, что все они выведутся без хвостов. Потому что Qt работает правильно, это у вас в программе какой-то косяк.
0
 Аватар для KellyDink
6 / 6 / 0
Регистрация: 04.01.2012
Сообщений: 182
Записей в блоге: 44
02.02.2018, 14:19  [ТС]
TRam_
ок. поняла, но я-то делю на 100. а 100 это такое магическое число, которое не должно оставлять за собой хвосты. т.к. система у меня десятичная, то чисто в теории ничего больше, чем передвинутая точка не должно произойти.

alexu_007
=) между моим косяком и QTовским я тоже больше поверю в первое)
Но я думаю, что правы форумчане (я не смогла придумать корректного слова, чтобы назвать людей, которые мне ответили) которые сказали, он просто так отображает(
хотя в базу он иногда тоже записывает с хвостом. Но в основном при дебаге лицезрею этот самый хвост.
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
02.02.2018, 15:35
KellyDink, еще один возможный выход из ситуации - считать все в целых числах, в "копейках".
Правда здесь другая засада. Пусть x = 100, y = 100/3 = 33, z = 2*y = 66
Y + z = 99 != 100
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
02.02.2018, 16:15
Цитата Сообщение от KellyDink Посмотреть сообщение
т.к. система у меня десятичная
Если в твоей базе данных используется тип double, значит система у тебя двоичная. Плавающие точки с десятичным множителем современные процессоры считать не умеют, так что типа данных под такое не предусмотрено. Хотя можешь самостоятельно написать класс для расчётов с ними, но... Как выше сказано - используй целые числа, в особенности "большие целые числа". Тогда потери точности будут только при выполнении арифметических операций.

Добавлено через 2 минуты
А при записи/чтении представления в десятичном виде потерь не будет. Если конечно число "влезет".
0
 Аватар для KellyDink
6 / 6 / 0
Регистрация: 04.01.2012
Сообщений: 182
Записей в блоге: 44
09.02.2018, 17:15  [ТС]
кто там требовал пруфов?
вот так он иногда записывает в бдушечку( жутко бесит
Миниатюры
Округление double до 2-х знаков  
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
09.02.2018, 20:45
А читает эту базу данных кто?
0
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,350
10.02.2018, 08:57
Либо вы что-то делаете не так, либо ваша база глючит (записываете туда -9.86, а попадает в базу -9.8600000000001), либо косячит вывод из базы на экран.

По тем крохам информации, которую вы выкладываете, трудно понять и подсказать что-либо конкретное.
0
 Аватар для KellyDink
6 / 6 / 0
Регистрация: 04.01.2012
Сообщений: 182
Записей в блоге: 44
12.02.2018, 12:05  [ТС]
читает либо он же либо php. еще ее просматриваю я))))
ну кстати с чтением проблем не возникает. ибо я по этим значениям строю график и умный php сам разбирается с этими значениями.

Цитата Сообщение от alexu_007 Посмотреть сообщение
Либо вы что-то делаете не так, либо ваша база глючит (записываете туда -9.86, а попадает в базу -9.8600000000001), либо косячит вывод из базы на экран.
ну картинка выше это обыкновенный pgadmin. Врядли он может косячить) что нужно выложить-то? как я получаю эти даблы? не могу понять, как это может повлиять на проблему
Code
1
 Array[y].sigma = round((sqrt(fsum2/(i) - fmean*fmean))*100)/100;
вот так считаю много-много раз. очень много.....
записываю в бдушечку вот так

C++
1
2
3
4
5
6
7
8
9
10
11
   QSqlQuery query;
    QString queryStr = QString("INSERT INTO %1 (id, value) VALUES ").arg(table);
              for (int i = 0; i < sigma.size(); i++){
                  double sigma = sigma.at(i);
                  queryStr += QString("(%1, %2), ").arg(id).arg(sigma);
              }
              queryStr.remove(queryStr.size() - 2 , 1);
              if(!query.exec(queryStr)){
                  qDebug() << "Fails insert into DB!  " << query.lastError().text();
              }
              query.clear();
я могла бы поверить, что косячит бдушечка, но именно так я вижу эти даблы после округление в дебаге( так что опять же больше смысла в том, что кьют так считает, а не бдушечка
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
12.02.2018, 12:28
C++
1
.arg(id).arg(sigma, 0, 'f', 3)
0
 Аватар для KellyDink
6 / 6 / 0
Регистрация: 04.01.2012
Сообщений: 182
Записей в блоге: 44
14.02.2018, 13:25  [ТС]
крутотишка! так работает! а для query.bindValue так можно?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.02.2018, 13:25

Округление до 2 знаков
Добрый день!Не могу реализовать округление до 2 знаков после запятой #include &lt;cstdio&gt; #include &lt;cstdlib&gt; #include...

Округление до двух знаков
как забить формулу с округлением до двух знаков?:)

Округление знаков в ASP.
Добрый день. Подскажите пожалуйста. Такая ситуация. В хранимой поцедуре на SQL выполняется запрос Select * from таблица. Таблица...

Округление Double
Использую Double, возникают при тонких расчетах проблемы с округлением. Какие есть стандартные способы решения? :)

Округление double
Короче ввожу число 1.05 в Debug показывает его, как 1.004999999999999999995663191310058 вот как эту чушь убрать, у меня задача из-за...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru