Внимание: в Excel и Excel-VBA используются два разных алгоритма.
В Excel:
=ROUND(0.5,0)
возвращает 1.
=ROUND(1.5,0)
возвращает 2.
В Excel-VBA:
Print Round(0.5,0)
0
Print Round(1.5,0)
2
VBA использует округление банкира: округляет 0,5 до ближайшего даже целого числа.Обратите внимание, что та же логика переносится в десятичные разряды младшего разряда, если вы Round
в более десятичные разряды.Например, Round(0.05,1)
возвращает ноль в Excel-VBA (в отличие от 0,1 в Excel).
Это одна из особенностей VBA, которая мне больше всего не нравится.Это несовместимо с Excel делает это еще хуже.
Числовой формат не имеет значения для этой проблемы.