String.Format - 整数、千位分隔符,无小数

4

最简单的String.Format模板是什么,可以格式化一个带有千位分隔符(逗号)且没有小数位的整数?使用en-US文化。以下是所需格式的示例:

1200 = 1,200

900 = 900

8 = 8

感谢您!
3个回答

5
您需要的是 N0 格式。 N 表示使用逗号分隔,而 0 的作用是告诉它不要使用小数点:
// will format as 33,540
string.Format("{0:N0}", 33540.54M)

// example using an integer: 1,200
string.Format("{0:N0}", 1200);

来自MSDN

结果:整数和小数位、分组分隔符以及带有可选负号的小数点。支持所有数值类型。精度说明符:所需小数位数。默认精度说明符:由NumberFormatInfo.NumberDecimalDigits定义。更多信息:数字(“N”)格式说明符。


2

仅使用格式字符串是无法实现的。您还需要指定区域设置或数字格式,或确保当前的区域设置是正确的。千位分隔符使用在区域设置中指定的分隔符,您不能在格式中指定分隔符。

格式字符串N0是最短的,可以得到千位分隔符和零小数位。

示例:

String.Format(CultureInfo.GetCultureInfo("en-US"), "{0:N0}", 12345678.901234)

在使用string.Format模板时,不需要引用文化,例如:string.Format("有<b>{0:#,0}</b>个结果与您的查询匹配:", resultsCount);...正如我所指出的,我正在使用en-US文化。 - mdelvecchio
此外,您可以将千位分隔符指定为您选择的符号,例如:{0:#|0} 将生成 "1|200"。 - mdelvecchio
@mdelvecchio:从问题中不清楚您是否特别使用en-US文化,或者您是否希望结果按照en-US文化进行格式化。我只是想在答案中明确指出,您必须确保使用特定的文化来获取正确的千位分隔符。在格式中,只有,表示千位分隔符,格式{0:#|0}不会产生1|200而是120|0 - Guffa
这是我所说的 - 您可以使用string.Format模板指定任何符号作为千位分隔符。您说:“千位分隔符使用在文化中指定的分隔符,无法在格式中指定分隔符。” 我回答:“当然可以将千位分隔符指定为您选择的符号,如下所示:{0:#|0}”。您犯了错误,没关系。我的问题中引用文化显然是告知string.Format正在使用哪种文化。还能有别的意思吗? - mdelvecchio
@mdelvecchio:不,那不是你说的。您可以指定要包含在格式中的任何字符,但不能将其指定为千位分隔符。格式{0:#|0}将“|”插入数字中的最后一位数字之前,而不是作为千位分隔符。关于文化,仅提及它可能意味着已指定文化,或者格式字符串应该与使用该文化进行格式化的结果相同。 - Guffa
显示剩余2条评论

0

我找到了一个符合预期的。

{0:#,0}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接