У меня есть округляющаяся проблема в .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