Как использовать арифметическое округление вместо банковского, и повысить точность расчётов? Вопросы тем, кто занимался серьёзными проектами. Как относиться к расчётам переменных float?import math
print(math.tan(math.pi / 4)) # погрешность 1E-16
Может первый пример слишком жёсткий; можно привести что-нибудь попроще. Например в пределах сотых долей.print(1.2 - 1) # погрешность 4E-17
a = .1 * 3 # двойная точность?
print(a, a == 0.3) # погрешность 4E-17
a = round(.1 * 6, 15) # погрешность 1E-16
print(a, a == 0.6) # погрешность -> 0
И конечно же, используя костыль через функцию round хотелось бы получать предсказуемость результата. Поэтому, есть какая-нибудь функция для вычисления арифметического округления?list = [2 + float(i) / 100 for i in range(5, 96, 10)] # 2.05 - 2,95
round = [round(i, 1) for i in list] # Банковское округление [0,1,2*,5,6]
# * Несоотвествие с арифметическим округлением только в Python 3.3
Листал руководство. Тестировал на интерпретаторе.

21 Авг 2019 в 06:12
154 +1
1
Ответы
1

Для вычисления арифметического округления в Python можно использовать функцию round с указанием количества знаков после запятой, до которых нужно округлить. Вот пример:

a = 1.23
rounded_a = round(a, 1) # арифметическое округление до первого знака после запятой
print(rounded_a) # выводит 1.2

Таким образом, указав необходимое количество знаков после запятой, вы можете получить более предсказуемый результат при округлении чисел типа float.

20 Апр 2024 в 13:22
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир