对十进制数使用自定义字符串格式c#
Posted
技术标签:
【中文标题】对十进制数使用自定义字符串格式c#【英文标题】:Using custom string format for decimal number c# 【发布时间】:2017-03-11 08:56:43 【问题描述】:我在数据库中得到了一个小数点后 4 位的十进制值,但我需要显示格式,后面有没有 0 的千位分隔符。我已经尝试过 G、F、N 格式,但对我想要的结果没有任何线索。
1234.3456 // 1,234.3456
1234.0000 // 1,234.00
1234.3450 // 1,234.345
1234.345678 // 1,234,3457
1234 // 1,234.00
1234.2 // 1,234,20
【问题讨论】:
但我对我想要的结果没有任何线索 【参考方案1】:这里很简单,就是解决这个问题的例子。如果它解决了您的问题,请不要忘记标记为答案:)
double value;
value = 123;
Console.WriteLine(value.ToString("00000"));
Console.WriteLine(String.Format("0:00000", value));
// Displays 00123
value = 1.2;
Console.WriteLine(value.ToString("0.00", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"0:0.00", value));
// Displays 1.20
Console.WriteLine(value.ToString("00.00", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"0:00.00", value));
// Displays 01.20
CultureInfo daDK = CultureInfo.CreateSpecificCulture("da-DK");
Console.WriteLine(value.ToString("00.00", daDK));
Console.WriteLine(String.Format(daDK, "0:00.00", value));
// Displays 01,20
value = .56;
Console.WriteLine(value.ToString("0.0", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"0:0.0", value));
// Displays 0.6
value = 1234567890;
Console.WriteLine(value.ToString("0,0", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"0:0,0", value));
// Displays 1,234,567,890
CultureInfo elGR = CultureInfo.CreateSpecificCulture("el-GR");
Console.WriteLine(value.ToString("0,0", elGR));
Console.WriteLine(String.Format(elGR, "0:0,0", value));
// Displays 1.234.567.890
value = 1234567890.123456;
Console.WriteLine(value.ToString("0,0.0", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"0:0,0.0", value));
// Displays 1,234,567,890.1
value = 1234.567890;
Console.WriteLine(value.ToString("0,0.00", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"0:0,0.00", value));
// Displays 1,234.57
【讨论】:
【参考方案2】:实际上,Decimal.ToString 的 MSDN 页面几乎完全符合您在上一个示例中所需要的内容。
说明符 = "#,#.00#;(#,#.00#)"
所以只需删除否定格式,并在末尾添加一个额外的#
即可:specifier = "#,#.00##"
刚刚尝试过:
decimal[] decimals = 1234.3456M, 1234.0000M, 1234.3450M, 1234.345678M, 1234, 1234.2M;
string[] formattedDecimals = decimals.Select(d => d.ToString(specifier)).ToArray();
【讨论】:
以上是关于对十进制数使用自定义字符串格式c#的主要内容,如果未能解决你的问题,请参考以下文章