У меня проблема округления внутри .Net..Net Rounding Issue
Я округляю трехзначное число до двух цифр, и это вызывает некоторые проблемы с одним номером.
Если я попытаюсь округлить 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
+1 для десятичного предложения –
Благодарим за отзыв. На мой большой вопрос, почему это работает для всех других ценностей? – Jeff
Я бы тоже согласился с вами, если бы это была переменная. Тем не менее, я помещал это значение в список наблюдения как 34.425. Поэтому его не следует представлять как 34.43499999 ... Это правильно в моем предположении? – Jeff