Я думаю, что нашел что-то, что нельзя сделать только с форматированием строк: мне нужна строка, которая позволила бы мне отформатировать двойное число, чтобы не отображались десятичные знаки, и чтобы:
- Числа разделены тысячами
- 0 показывает тире
- Отрицательные числа показаны между скобками
- 0,5 округляется до 1, а -0,5 до -1.
- 0,4999... округляется до 0, а -0,4999... до -0 (что должно отображаться как "(0)").
Я пришел к этому.
"{0:#,0;(#,0);-}"
Но это показывает эти числа между (-0,5 и 0,5) как «-». Если я заменю его следующим.
"{0:#,0.#;(#,0.#);-}"
Это работает «хорошо», за исключением того, что числа будут отображаться с десятичными точками, а мне нужно, чтобы они были округлены.
Для иллюстрации я пробовал:
string format = "#,0;(#,0);-";
Console.WriteLine(1000000.ToString(format));
Console.WriteLine(1000.ToString(format));
Console.WriteLine(100.ToString(format));
Console.WriteLine(10.ToString(format));
Console.WriteLine(1.ToString(format));
Console.WriteLine(0.5.ToString(format));
Console.WriteLine(0.4.ToString(format));
Console.WriteLine(0.ToString(format));
Console.WriteLine((-0.4).ToString(format));
Console.WriteLine((-0.5).ToString(format));
Console.WriteLine((-1).ToString(format));
Console.WriteLine((-1000000).ToString(format));
Который дает:
1,000,000
1,000
100
10
1
1
-
-
-
(1)
(1)
(1,000,000)
А также:
string format = "#,0.#;(#,0.#);-";
Console.WriteLine(1000000.ToString(format));
Console.WriteLine(1000.ToString(format));
Console.WriteLine(100.ToString(format));
Console.WriteLine(10.ToString(format));
Console.WriteLine(1.ToString(format));
Console.WriteLine(0.5.ToString(format));
Console.WriteLine(0.4.ToString(format));
Console.WriteLine(0.ToString(format));
Console.WriteLine((-0.4).ToString(format));
Console.WriteLine((-0.5).ToString(format));
Console.WriteLine((-1).ToString(format));
Console.WriteLine((-1000000).ToString(format));
Что выводит:
1,000,000
1,000
100
10
1
0.5
0.4
-
(0.4)
(0.5)
(1)
(1,000,000)
Но это то, чего я пытаюсь достичь:
1,000,000
1,000
100
10
1
1
0
-
(0)
(1)
(1)
(1,000,000)
Итак, я соглашаюсь использовать первую строку формата, а затем повторно обрабатывать те значения, которые выводятся как «-», но мне интересно, есть ли способ сделать это только с помощью строки формата.
Спасибо за любую помощь!