ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
22 июля
1129368 Топик полностью
maleon (03.09.2021 18:05, просмотров: 159) ответил maleon на Что за странные правила округления, товарищ проверил на Delphi, та же фигня
Несовпадение машинного округления 

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 совпали