Я нахожу, что функция VBA Round возвращает неверный результат. Я нашел рабочую альтернативу, которая заключается в использовании Application.Round
.Почему Round производит отличный результат, чем Application.Round
Почему функция VBA Round
работает должным образом?
Sub roundingResults()
Range("A1") = 123456.705
Debug.Print "Approach #1 " & Round(Range("A1").Value, 2)
Debug.Print "Approach #2 " & Application.Round(Range("A1").Value, 2)
End Sub
Выход
Approach #1 123456.7
Approach #2 123456.71
См [ЗДЕСЬ] (http://mathforum.org/library/drmath/view/58972.html) для лучшего объяснения, но суть в том, что существует два способа округлить число, заканчивающееся на 5. Первый подход использует четное. Поэтому, если вы изменили номер на '123456.715', оба вернули' 123456.72'. Вторая оценка использует 5 в качестве разделителя. –