У меня проблема округления внутри .Net.
Я округляю 3-значное число до двух цифр, и это вызывает некоторые проблемы с одним номером.
Если я попытаюсь округлить 34.425 до двух знаков после запятой, он должен округлить его до 34.43. Я использую параметр roundawayfromzero, и он работал для каждого числа в программе, за исключением этого.
Код Math.Round(34.425, 2, MidpointRounding.AwayFromZero)
должен равняться 34.43, однако он равен 34.42.
Если я попробую это с любым другим номером, он отлично работает.
Math.Round(34.435, 2, MidpointRounding.AwayFromZero) = 34.44
Math.Round(34.225, 2, MidpointRounding.AwayFromZero) = 34.23
Math.Round(34.465, 2, MidpointRounding.AwayFromZero) = 34.47
Я просто хотел проверить, не сталкивался ли кто-нибудь с этой проблемой раньше?
Сейчас я исправил эту проблему, преобразовывая число в десятичное. Я изменил код на это, и теперь он отлично работает:
Math.Round(CDec(34.425), 2, MidpointRounding.AwayFromZero) = 34.43
Я просто ищу причину, почему мой старый код не работал.
Спасибо!
Обновлен код до правильного AwayFromZero