Это объяснение MSFT об ошибке MROUND:

Когда десятичное значение предоставляется множественному аргументу, направление округления для чисел средней точки не определено. Например, MROUND(6.05,0.1) возвращает 6.0, а MROUND(7.05.0.1) возвращает 7.1.

MSFT обвиняет IEEE в этой ошибке.

Что такое обходной путь для эквивалента MROUND(6.05,0.1), возвращающего 6.1? Должен ли я использовать floor() или потолок () в сочетании с добавлением или вычитанием десятичного числа?

1 ответ1

0

Я бы предложил отказаться от команды MROUND(Number, 0.1) и использовать умножение и функцию потолка. Например, 0.1*CEILING.MATH(10*(Number - 0.0499)) . Если функция глючит, я бы не хотел ее в своем коде.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .