Answers:
String.Format("{0:n}", 1234); // Output: 1,234.00
String.Format("{0:n0}", 9876); // No digits after the decimal point. Output: 9,876
string.Format("{0:n0}", Double.Parse(yourValue));
我发现这是最简单的方法:
myInteger.ToString("N0")
int number = 1000000000;
string whatYouWant = number.ToString("#,##0");
//You get: 1,000,000,000
,
千位分隔符,例如空格或偶数.
。
.
)的语言,则.NET将自动用该分隔符替换逗号。再次提醒您,如果您仍然不明白为什么这样做,请阅读罗杰(Roger)发布的链接。
标准格式及其相关输出,
Console.WriteLine("Standard Numeric Format Specifiers");
String s = String.Format("(C) Currency: . . . . . . . . {0:C}\n" +
"(D) Decimal:. . . . . . . . . {0:D}\n" +
"(E) Scientific: . . . . . . . {1:E}\n" +
"(F) Fixed point:. . . . . . . {1:F}\n" +
"(G) General:. . . . . . . . . {0:G}\n" +
" (default):. . . . . . . . {0} (default = 'G')\n" +
"(N) Number: . . . . . . . . . {0:N}\n" +
"(P) Percent:. . . . . . . . . {1:P}\n" +
"(R) Round-trip: . . . . . . . {1:R}\n" +
"(X) Hexadecimal:. . . . . . . {0:X}\n",
- 1234, -1234.565F);
Console.WriteLine(s);
输出示例(使用我们的文化):
(C) Currency: . . . . . . . . ($1,234.00)
(D) Decimal:. . . . . . . . . -1234
(E) Scientific: . . . . . . . -1.234565E+003
(F) Fixed point:. . . . . . . -1234.57
(G) General:. . . . . . . . . -1234
(default):. . . . . . . . -1234 (default = 'G')
(N) Number: . . . . . . . . . -1,234.00
(P) Percent:. . . . . . . . . -123,456.50 %
(R) Round-trip: . . . . . . . -1234.565
(X) Hexadecimal:. . . . . . . FFFFFB2E
这是最好的格式。适用于所有这些情况:
String.Format( "{0:#,##0.##}", 0 ); // 0
String.Format( "{0:#,##0.##}", 0.5 ); // 0.5 - some of the formats above fail here.
String.Format( "{0:#,##0.##}", 12314 ); // 12,314
String.Format( "{0:#,##0.##}", 12314.23123 ); // 12,314.23
String.Format( "{0:#,##0.##}", 12314.2 ); // 12,314.2
String.Format( "{0:#,##0.##}", 1231412314.2 ); // 1,231,412,314.2
String.Format("{0:#,###,###.##}", MyNumber)
这将在相关点给您逗号。
投票最多的答案很棒,并且已经帮助了大约7年。随着C#6.0的引入,特别是String Interpolation的引入,出现了一种更整齐,更安全的IMO方法to add commas in thousands place for a number
:
var i = 5222000;
var s = $"{i:n} is the number"; // results to > 5,222,000.00 is the number
s = $"{i:n0} has no decimal"; // results to > 5,222,000 has no decimal
将变量i
放在占位符处的位置(即{0}
)。因此,无需记住哪个对象到达哪个位置。格式(即:n
)未更改。有关新功能的完整功能,您可以转到此页面。
如果您希望强制使用“,”分隔符而不考虑其区域性(例如在跟踪或日志消息中),则以下代码将起作用,并具有告诉下一个偶然发现您正在执行的操作的下一个家伙的额外好处。
int integerValue = 19400320;
string formatted = string.Format(CultureInfo.InvariantCulture, "{0:N0}", integerValue);
集的格式设置为“ 19,400,320”
下面的示例显示多个值,这些值使用包含零个占位符的自定义格式字符串进行了格式化。
String.Format("{0:N1}", 29255.0);
要么
29255.0.ToString("N1")
结果“ 29,255.0”
String.Format("{0:N2}", 29255.0);
要么
29255.0.ToString("N2")
结果“ 29,255.00”
请注意,您要格式化的值应为数字。看起来它不会采用数字的字符串表示形式,并且格式带有逗号。
我以前不再担心文化和潜在格式问题的方法是,将其格式化为货币,然后取出货币符号。
if (decimal.TryParse(tblCell, out result))
{
formattedValue = result.ToString("C").Substring(1);
}
fr-FR
),或者使用多个字符来表示货币(例如da-DK
),或者不使用逗号分隔数千个字符(例如,大多数欧洲大陆)。
下面是Java中的一个很好的解决方案!
NumberFormat fmt = NumberFormat.getCurrencyInstance();
System.out.println(fmt.format(n));
或者以更健壮的方式,您可能想要获取特定位置的语言环境,然后使用以下方法:
int n=9999999;
Locale locale = new Locale("en", "US");
NumberFormat fmt = NumberFormat.getCurrencyInstance(locale);
System.out.println(fmt.format(n));
美国地区输出:$ 9,999,999.00
德国语言环境输出
Locale locale = new Locale("de", "DE");
输出:9.999.999,00€
印度语言环境输出
Locale locale = new Locale("de", "DE");
输出:Rs.9,999,999.00
爱沙尼亚语言环境输出
Locale locale = new Locale("et", "EE");
输出:9 999 999€
正如您在不同输出中看到的那样,您不必担心分隔符是逗号,点还是空格,您可以根据i18n标准格式化数字
locale
?
String.Format("{0:#,##0}", 1234);
也可以不带小数位。