What is the best way to format a decimal if I only want decimal displayed if it is not an integer.
如果我只想显示小数而不是整数,那么格式化小数的最佳方法是什么。
Eg:
decimal amount = 1000M
decimal vat = 12.50M
When formatted I want:
格式化时我想:
Amount: 1000 (not 1000.0000)
Vat: 12.5 (not 12.50)
2 个解决方案
#1
21
decimal one = 1000M;
decimal two = 12.5M;
Console.WriteLine(one.ToString("0.##"));
Console.WriteLine(two.ToString("0.##"));
#2
20
Updated following comment by user1676558
由user1676558更新了以下评论
Try this:
decimal one = 1000M;
decimal two = 12.5M;
decimal three = 12.567M;
Console.WriteLine(one.ToString("G"));
Console.WriteLine(two.ToString("G"));
Console.WriteLine(three.ToString("G"));
For a decimal value, the default precision for the "G" format specifier is 29 digits, and fixed-point notation is always used when the precision is omitted, so this is the same as "0.#############################".
对于十进制值,“G”格式说明符的默认精度为29位,省略精度时始终使用定点表示法,因此这与“0。########”相同#####################”。
Unlike "0.##" it will display all significant decimal places (a decimal value can not have more than 29 decimal places).
与“0。##”不同,它将显示所有有效小数位(小数值不能超过29位小数)。
The "G29" format specifier is similar but can use scientific notation if more compact (see Standard numeric format strings).
“G29”格式说明符类似,但如果更紧凑则可以使用科学记数法(请参阅标准数字格式字符串)。
Thus:
decimal d = 0.0000000000000000000012M;
Console.WriteLine(d.ToString("G")); // Uses fixed-point notation
Console.WriteLine(d.ToString("G29"); // Uses scientific notation
#1
21
decimal one = 1000M;
decimal two = 12.5M;
Console.WriteLine(one.ToString("0.##"));
Console.WriteLine(two.ToString("0.##"));
#2
20
Updated following comment by user1676558
由user1676558更新了以下评论
Try this:
decimal one = 1000M;
decimal two = 12.5M;
decimal three = 12.567M;
Console.WriteLine(one.ToString("G"));
Console.WriteLine(two.ToString("G"));
Console.WriteLine(three.ToString("G"));
For a decimal value, the default precision for the "G" format specifier is 29 digits, and fixed-point notation is always used when the precision is omitted, so this is the same as "0.#############################".
对于十进制值,“G”格式说明符的默认精度为29位,省略精度时始终使用定点表示法,因此这与“0。########”相同#####################”。
Unlike "0.##" it will display all significant decimal places (a decimal value can not have more than 29 decimal places).
与“0。##”不同,它将显示所有有效小数位(小数值不能超过29位小数)。
The "G29" format specifier is similar but can use scientific notation if more compact (see Standard numeric format strings).
“G29”格式说明符类似,但如果更紧凑则可以使用科学记数法(请参阅标准数字格式字符串)。
Thus:
decimal d = 0.0000000000000000000012M;
Console.WriteLine(d.ToString("G")); // Uses fixed-point notation
Console.WriteLine(d.ToString("G29"); // Uses scientific notation