Форум сайта python.su
1
Возможно банковское выбрали из-за меньшего значения погрешности на массиве данных(в среднем округления в обе стороны будут компенсировать друг друга).
Офлайн
221
Как бы то ни было, менять функцию round, которая вообще носит фундаментальный характер и имеет историю начатую более чем полвека назад, таким диким способом неправильно, это вводит только лишь путаницу не только в Питоне 2/3, но и в целом в мире программирования.
И что им мешало сделать round_bank() …
Офлайн
857
Офлайн
0
Классическое округление, без использования библиотек. Наслаждайтесь 
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)
Офлайн