每1000个数字之间的String.Format C#间距[重复]
Posted
技术标签:
【中文标题】每1000个数字之间的String.Format C#间距[重复]【英文标题】:String.Format C# spacing between every 1000 number [duplicate] 【发布时间】:2012-11-02 12:53:23 【问题描述】:可能重复:Use a custom thousand separator in C#
我想要一个字符串格式来格式化我的数字,如下所示:
Input: 1000 Ouput: 1 000.00
Input: 10000 Output: 10 000.00
Input: 100000 Output: 100 000.00
【问题讨论】:
令人惊讶的是,如果不付出额外的努力,尚未提供的答案都无法满足 10 亿的需求。在上面的链接中寻找 John Skeets 的答案。 看看this MSDN 文章。 如果它适合您,请不要忘记将答案标记为已接受... 【参考方案1】:完全按照你的要求工作,不需要额外的格式化
String.Format("0:# ###.00", 40000);
output - "40 000.00"
String.Format("0:# ###.00", 400000);
output - "400 000.00"
String.Format("0:# ###.00", 4000);
output - "4 000.00"
查看博客帖子:Format Number To Display
【讨论】:
除了 OP 想要 2 位小数... 不适用于大于 100 万的值 @TrevorPilley - 它已经更新了..只需运行代码就可以了 @woni - 它完全适用于用户给出的输入...我认为它不适用于任何数字如果您发现任何数字显示示例错误...【参考方案2】:您可以使用NumberFormatInfo
类来做到这一点。查看示例代码。
NumberFormatInfo numberFormatInfo = (NumberFormatInfo)CultureInfo.InvariantCulture.NumberFormat.Clone();
numberFormatInfo.NumberGroupSeparator = " ";
int a = 1000;
Console.WriteLine(a.ToString("n", numberFormatInfo)); // 1 000.00
【讨论】:
猜你和我有同样的想法。 :)【参考方案3】:这会起作用
String.Format("0:### ### ### ###.##", 10000.00)
结果:
" 10 000.00"
您需要修剪结果以删除多余的空格
【讨论】:
因为这是唯一有效的答案,即使您必须修剪输出:+1【参考方案4】:朋友来了:
var formatInfo = new NumberFormatInfo();
formatInfo.CurrencyGroupSeparator = " ";
formatInfo.CurrencySymbol = string.Empty;
Console.WriteLine(1000.ToString("C", formatInfo));
Console.WriteLine(10000.ToString("C", formatInfo));
Console.WriteLine(100000.ToString("C", formatInfo));
【讨论】:
【参考方案5】:如果输入是一个可以使用的整数。
input.ToString("F");
编辑:我的错,没有看到格式中的空格,以为它只是用于十进制值
另一种可能不是最好的快速方法是将其转换为货币字符串并删除前面的货币符号并将“,”替换为“。”
例如
input.ToString( "C" );
input.Replace( "," , "." );
input.Remove( 0, 1 ); //or the amount of characters in currency symbol if more than one
【讨论】:
以上是关于每1000个数字之间的String.Format C#间距[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Java 中的 String.format() 和十六进制数字
在没有数字占位符的 JavaScript 中复制 C# 的 string.format()
String.Format数字格式化输出 {0:N2} {0:D2} {0:C2} (转)