Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 21, 2013 15:44:49

Euler
Зарегистрирован: 2013-07-30
Сообщения: 43
Репутация: +  1  -
Профиль   Отправить e-mail  

Округление

Возможно банковское выбрали из-за меньшего значения погрешности на массиве данных(в среднем округления в обе стороны будут компенсировать друг друга).

Офлайн

#2 Окт. 22, 2013 00:35:10

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Округление

Как бы то ни было, менять функцию round, которая вообще носит фундаментальный характер и имеет историю начатую более чем полвека назад, таким диким способом неправильно, это вводит только лишь путаницу не только в Питоне 2/3, но и в целом в мире программирования.
И что им мешало сделать round_bank() …



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Окт. 22, 2013 01:55:16

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10022
Репутация: +  857  -
Профиль   Отправить e-mail  

Округление

она, походу, более точный результат даёт при ошибках округления
вот переход, ревизия

то, что там было, тоже округляло до чётного в случае 0.5; код добавлял Гвидо, а до этого добавления не нашёл ничего вплоть до 90-го года



Отредактировано py.user.next (Окт. 22, 2013 02:35:39)

Офлайн

#4 Дек. 16, 2018 16:56:31

qa13
Зарегистрирован: 2018-12-16
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Округление

Классическое округление, без использования библиотек. Наслаждайтесь

 def rd(x,y=0):
    ''' A classical mathematical rounding by Voznica '''
    m = int('1'+'0'*y) # multiplier - how many positions to the right
    q = x*m # shift to the right by multiplier
    c = int(q) # new number
    i = int( (q-c)*10 ) # indicator number on the right
    if i >= 5:
        c += 1
    return c/m
# Сравните:
print( round(0.49), round(0.51), round(0.5), round(1.5), round(2.5), round(0.15,1))  # 0  1  0  2  2  0.1
print( rd(0.49), rd(0.51), rd(0.5), rd(1.5), rd(2.5), rd(0.15,1))  # 0  1  1  2  3  0.2

Отредактировано qa13 (Дек. 16, 2018 16:56:53)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version