Вы можете создать форматтер, как в этом примере:
int numDigitsAfterPoint = 5;
double num = 1.25d;
string result = num.ToString("0." + new string('0', numDigitsAfterPoint));
или (более просто)
string result = num.ToString("F" + numDigitsAfterPoint);
В качестве идентификатора ToString
использует MidpointRounding.AwayFromZero
вместоMidpointRounding.ToEven
(также называется Банковским округлением).Как пример:
var x1 = 1.25.ToString("F1");
var x2 = 1.35.ToString("F1");
var x3 = Math.Round(1.25, 1).ToString();
var x4 = Math.Round(1.35, 1).ToString();
Они приведут к другому результату (потому что Math.Round
обычно использует MidpointRounding.ToEven
)
И обратите внимание, что внутренне ToString()
, кажется, делает некоторую "магию" раньшеокругление цифр.Для двойных чисел, если вы спросите его менее 15 цифр, я думаю, что сначала округляется до 15 цифр, а затем округляется до нужного числа цифр.Смотри здесь https://ideone.com/ZBEis9