Несовпадение машинного округления Python-скриптик для проверки:
from decimal import Decimal as Dc
print('''\
Несовпадение машинного округления
до одного знака после запятой значений
от 0.000000 до 0.999999 с ожидаемым:
Значение Ожидалось Получилось''')
for i in range(1000000):
x2 = Dc(f'0.{i:06d}')
if round(x2, 1) * 10 != int(x2 * 10 + Dc(0.5)):
print(f'{x2:7} {Dc(int(x2 * 10 + Dc(0.5)) / Dc(10)) :5.1f}'
f' {round(x2, 1):8.1f}')
print('Остальные 999995 совпали')
Результат:
Несовпадение машинного округления
до одного знака после запятой значений
от 0.000000 до 0.999999 с ожидаемым:
Значение Ожидалось Получилось
0.050000 0.1 0.0
0.250000 0.3 0.2
0.450000 0.5 0.4
0.650000 0.7 0.6
0.850000 0.9 0.8
Остальные 999995 совпали