ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
22 июля
1128947 Топик полностью
maleon (01.09.2021 21:37, просмотров: 199) ответил BlackMorda на Стандартное правило округления в "С" - отбрасывание "хвоста".
Попробовал с типом Decimal, округление тоже идёт к чётным значениям последней цифры, но хотя бы однообразно. Попробовал, как в школе учили, через int(x + 0.5), 

получилось как учили в школе (отрицательные не рассматривал)

from decimal import Decimal as Dc

print('{i}   {x3}    {x2}  {x1}  {x0}  {x3:.3f} {x2:.2f} {x1:.1f} {x0:.0f} '
                            '{int(x0 + 0.5)}')
for i in range(10):
    x3 = float(f'0.00{i}5')
    x2 = float(f'0.0{i}5')
    x1 = float(f'0.{i}5')
    x0 = float(f'{i}.5')
    print(f' {i}   {x3}  {x2}  {x1}  {x0}     {x3:.3f}    {x2:.2f}     '
                            f'{x1:.1f}      {x0:2.0f}   {int(x0 + 0.5):5}')

print('\n{i}   {x3}    {x2}  {x1}  {x0}  {x3:.3f} {x2:.2f} {x1:.1f} {x0:.0f} '
                            '{int(x0 + 0.5)}')
for i in range(10):
    x3 = Dc(f'0.00{i}5')
    x2 = Dc(f'0.0{i}5')
    x1 = Dc(f'0.{i}5')
    x0 = Dc(f'{i}.5')
    print(f' {i}   {x3}  {x2}  {x1}  {x0}     {x3:.3f}    {x2:.2f}     '
                            f'{x1:.1f}      {x0:2.0f}   {int(x0 + Dc(0.5)):5}')

Получаем

>>> 
*** Remote Interpreter Reinitialized ***
{i}   {x3}    {x2}  {x1}  {x0}  {x3:.3f} {x2:.2f} {x1:.1f} {x0:.0f} {int(x0 + 0.5)}
 0   0.0005  0.005  0.05  0.5     0.001    0.01     0.1       0       1
 1   0.0015  0.015  0.15  1.5     0.002    0.01     0.1       2       2
 2   0.0025  0.025  0.25  2.5     0.003    0.03     0.2       2       3
 3   0.0035  0.035  0.35  3.5     0.004    0.04     0.3       4       4
 4   0.0045  0.045  0.45  4.5     0.004    0.04     0.5       4       5
 5   0.0055  0.055  0.55  5.5     0.005    0.06     0.6       6       6
 6   0.0065  0.065  0.65  6.5     0.006    0.07     0.7       6       7
 7   0.0075  0.075  0.75  7.5     0.007    0.07     0.8       8       8
 8   0.0085  0.085  0.85  8.5     0.009    0.09     0.8       8       9
 9   0.0095  0.095  0.95  9.5     0.009    0.10     0.9      10      10

{i}   {x3}    {x2}  {x1}  {x0}  {x3:.3f} {x2:.2f} {x1:.1f} {x0:.0f} {int(x0 + 0.5)}
 0   0.0005  0.005  0.05  0.5     0.000    0.00     0.0       0       1
 1   0.0015  0.015  0.15  1.5     0.002    0.02     0.2       2       2
 2   0.0025  0.025  0.25  2.5     0.002    0.02     0.2       2       3
 3   0.0035  0.035  0.35  3.5     0.004    0.04     0.4       4       4
 4   0.0045  0.045  0.45  4.5     0.004    0.04     0.4       4       5
 5   0.0055  0.055  0.55  5.5     0.006    0.06     0.6       6       6
 6   0.0065  0.065  0.65  6.5     0.006    0.06     0.6       6       7
 7   0.0075  0.075  0.75  7.5     0.008    0.08     0.8       8       8
 8   0.0085  0.085  0.85  8.5     0.008    0.08     0.8       8       9
 9   0.0095  0.095  0.95  9.5     0.010    0.10     1.0      10      10
>>>