|
|
||||||
Классическое округление чисел09.08.2021, 13:15. Показов 13743. Ответов 12
Метки python 3.5 (Все метки)
Добрый день!
Подскажите осталось ли в каком-нибудь модуле Python 3 обычное, а не банковское округление чисел? Нашел такой код.
Спасибо!
0
|
||||||
| 09.08.2021, 13:15 | |
|
Ответы с готовыми решениями:
12
Округление чисел Округление чисел Округление чисел |
| 09.08.2021, 17:02 | ||||||
|
VistaSV30,
Также округление можно сделать используя встроенный модуль math. Или настраивать вывод на экран с помощью Мини-языка форматирования. http://pythonz.net/references/... irovaniya/ https://docs.python.org/3/libr... i-language
1
|
||||||
|
|
||||||
| 09.08.2021, 19:25 [ТС] | ||||||
|
С функцией round() как раз и проблема, когда первая цифра отбрасываемой части 5, то округление происходит к ближайшему четному числу
Добавлено через 5 минут Банковское округление выполняется к ближайшему четному. Применение такого способа округления связано с тем, что в процессе округления только четыре цифры приводят к округлению в меньшую сторону – 1, 2, 3 и 4. Количество цифр приводящих к округлению в большую сторону пять – 5, 6, 7, 8 и 9. Такое неравенство приводит к тому, что при большом количестве вычислений с округленными дробными значениями постоянно нарастает погрешность.
0
|
||||||
| 09.08.2021, 20:23 | ||||||
|
VistaSV30, С чего Вы взяли, что 2.65 должно округлятся до 2.7 ?
классическое математическое округление, это 2.6. Правило округления такое: Если мы округляем до необходимого разряда после запятой, то число после этого разряда отбрасывается, если оно меньше или равно 5 (то есть относится к первой половине от 10). Если хоть на какую то пусть ничтожную долю, остаток больше 5, то прибавляется единица.
![]() Если Вы хотите не стандартное для математики округление, то напишите свою функцию округления.
0
|
||||||
|
8837 / 4489 / 1864
Регистрация: 27.03.2020
Сообщений: 7,311
|
||||||
| 09.08.2021, 20:26 | ||||||
Сообщение было отмечено VistaSV30 как решение
Решение
VistaSV30, так?
1
|
||||||
| 09.08.2021, 21:29 | ||||||||||||||||
|
А вот здесь почему то округляет не так.
![]() Но тут еще есть особенность питона. Он в памяти, если я не ошибаюсь, хранит десятичные числа в виде рациональных дробей. В самой машине, число задается битами, в виде целого двоичного числа. Поэтому внутри машины нет такого понятия как десятичная точка. Из за этого и возникают такие нюансы при округлении. 2.75, на самом деле хранится внутри как рациональная дробь. И при округлении зависит от того, есть ли хвост после цифры 5 при делении рациональной дроби , определяющей десятичную дробь. У числа 2.65 видимо хвоста нет, поэтому здесь округляет правильно, 2.6 а у числа 2.75 видимо есть хвост, который искажает классическое округление. Которое должно быть таким 2.7 , а выводит 2.8 . Добавлено через 19 минут VistaSV30, Смешно. Посмотрел в интернете, там каждый дает свое правило округления. ![]() Как все таки более правильно, это нужно смотреть в каком то стандарте. ![]() В общем округляйте как Вам нравится, используя свою функцию. Важно только это округление было по одному правилу для всех случаев. Добавлено через 11 минут VistaSV30, Хотя я не прав. Везде используется правило , что 5 всегда добавляет единицу. То есть должно быть так
![]() Добавлено через 1 минуту В общем выход один, использовать свою функцию. ![]() Добавлено через 10 минут VistaSV30, Вам такую функцию написал Gdez,
0
|
||||||||||||||||
|
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
|
|
| 09.08.2021, 21:32 | |
|
VistaSV30, кури: Rounding modes.
0
|
|
| 09.08.2021, 21:38 | ||||||
Arsegg, Я не стал рекомендовать модуль decimal , так как Лутц пишет, что он редко используется. Не знаю почему.
0
|
||||||
|
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
|
||||||
| 09.08.2021, 21:40 | ||||||
2
|
||||||
| 09.08.2021, 21:41 | ||
|
Не по теме:
Кликните здесь для просмотра всего текста
0
|
||
|
|
||||||
| 10.08.2021, 12:31 [ТС] | ||||||
|
Gdez, спасибо за функцию округления!
Читал, что Python 2 использовал математическое округление 0,5 Теперь Python 3 и еще ряд приложений используют банковское округление. Мне нужно именно математическое. Спасибо! Добавлено через 5 минут Немного докрутил код. Добавил, округление до целого по умолчанию
1
|
||||||
|
|
||||||
| 13.08.2021, 23:48 [ТС] | ||||||
|
Еще вариант (с форума R подсказали)
В C++ как я понял, тоже используется банковское округление. Подскажите в каких еще языках есть такое?
0
|
||||||
|
|
|
| 14.08.2021, 11:13 [ТС] | |
|
В США и странах Евросоюза округление производится в соответствии с IEEE 754-2008
Округление к ближайшему (привязка к четному). Если два ближайших числа с плавающей точкой одинаково близки, то должно быть получено число с чётной самой младшей цифрой. Это вариант по умолчанию для двоичной плавающей запятой и рекомендованный вариант по умолчанию для десятичного числа. В России и других странах СНГ используется ГОСТ Р 8.736-2011 Е.5 Сохраняемую, значащую цифру в погрешности оценки измеряемой величины при округлении увеличивают на единицу, если отбрасываемая цифра неуказываемого младшего разряда больше либо равна пяти, и не изменяют, если она меньше пяти.
1
|
|
| 14.08.2021, 11:13 | |
|
Помогаю со студенческими работами здесь
13
Округление чисел Округление чисел Округление чисел Округление чисел Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|