使用千位分隔符和强制小数位的String.Format十进制格式化

8

我希望使用String.Format方法对一个十进制数进行格式化,使其既含有千位分隔符,又包含指定的小数位数(3位)。

例如:

输入:

123456,12
78545,8

输出:

123.456,120
78.545,800

我已经尝试过。
String.Format("{0:0.0,000}", input);

但这只提供千位分隔符,不能“强制”小数位。

2
自定义数字格式避免依赖于您的文化是否使用句点或逗号格式化小数点。那会很痛苦。请使用"{0:#,##0.000}"等格式。 - Hans Passant
3个回答

9
在一个自定义数字格式字符串中,点号(.)用作“本地化小数分隔符”。即使您当前的语言环境使用逗号作为小数分隔符,也应在格式字符串中使用点号。同样,逗号(,)用于本地化千位分隔符。
由于您的格式将逗号放在小数点之后,会导致混淆(千位分隔符不适用于小数点之后)。
因此,请尝试:
 String.Format("{0:#,##0.000}", input);

(使用 # 代表数字,仅在 input 足够大时才包含。)

4

2

两种方式:

string.Format("{0:N3}", input)

或者明确指定(不考虑当前文化):

string.Format("{0:#,##0.000}", input)

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