Мисля, че открих нещо, което не може да се направи само с форматиране на низове: имам нужда от низ, който би ми позволил да форматирам двойно, за да не показва десетични знаци и така че:
- Числата са разделени от хиляди
- 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)
Така че се задоволявам с използването на първия форматиращ низ и след това повторното обработване на тези стойности, които излизат като "-", но се чудя дали има начин да направя това само с форматиращия низ.
Благодаря за всяка помощ!