.Net Rounding Issue

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

12
задан Jeff 19 October 2010 в 15:04
поделиться