Округление значений поплавка

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

Как я могу сделать это на С#?

Ответ 1

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

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

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

Ответ 2

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

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

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