Подтвердить что ты не робот

Форматировать десятичное значение для строки с ведущими пробелами

Как преобразовать десятичное значение в строку с одной цифрой после запятой/точкой и ведущими пробелами для значений менее 100?

Например, десятичное значение 12.3456 должно выводиться как " 12.3" с одним ведущим пространством. 10.011 будет " 10.0". 123.123 "123.1"

Я ищу решение, которое работает со стандартным/настраиваемым форматированием строк, т.е.

decimal value = 12.345456;
Console.Write("{0:magic}", value); // 'magic' would be a fancy pattern.
4b9b3361

Ответ 1

Этот шаблон {0,5:###.0} должен работать:

string.Format("{0,5:###.0}", 12.3456) //Output  " 12.3"
string.Format("{0,5:###.0}", 10.011)  //Output  " 10.0" 
string.Format("{0,5:###.0}", 123.123) //Output  "123.1"
string.Format("{0,5:###.0}", 1.123)   //Output  "  1.1"
string.Format("{0,5:###.0}", 1234.123)//Output "1234.1"

Ответ 2

value.ToString("N1");

Измените число для более десятичных знаков.

EDIT: пропущен бит дополнений

value.ToString("N1").PadLeft(1);

Ответ 3

Все вышеприведенное решение будет округлять десятичные числа, на случай, если кто-то ищет решение без округления

decimal dValue = Math.Truncate(1.199999 * 100) / 100;
dValue .ToString("0.00");//output 1.99