Округление значений с плавающей точкой - PullRequest
31 голосов
/ 23 ноября 2011

У меня есть значение double, например 12.256852651, и я хочу отобразить его как 12.257 как число с плавающей запятой без преобразования в строковый тип.

Как мне это сделать в C #?

Ответы [ 2 ]

47 голосов
/ 23 ноября 2011

Сначала я конвертирую в Decimal, а затем использую Math.Round в результате.Это преобразование не является строго необходимым, но я всегда чувствую себя немного неловко, если округляю до десятичных разрядов при использовании двоичных чисел с плавающей запятой.

Math.Round((Decimal)f, 3, MidpointRounding.AwayFromZero)

Вам также следует рассмотреть выбор MidpointRounding, так как по умолчанию используется раунд Банкира, а это не то, к чему вы привыкли в школе.

10 голосов
/ 23 ноября 2011

Если вы хотите отобразить его, это будет строка, и это то, что вам нужно использовать.

Если вы хотите округлить , чтобы использовать его позже в вычислениях, используйтеMath.Round((decimal)myDouble, 3).

Если вы не собираетесь использовать его в расчетах, но вам нужно отобразить , используйте double.ToString("F3").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...