将逗号千位分隔符添加到十进制(.net)

max*_*axp 17 .net formatting string-formatting number-formatting

我有一个十进制数字,比如1234.500.

我想让它显示1,234.4

我目前正在将其转换为双倍以删除尾随的'0'.

string.Format("{0:0,0}",1234.500)删除小数位,其他格式选项似乎使用两个小数位.

有人能提供见解吗?

Hen*_*man 24

您应该使用自定义格式 #,##0.00

string s = string.Format("{0:#,##0.00}", xx);
Run Code Online (Sandbox Code Playgroud)

1,234.50当xx = 1234.5M
忘记转换时会产生double,这对真的没有帮助.

  • 然后删除1个或多个零:#,## 0。或将它们设为可选:#,## 0.# (2认同)

roh*_*agg 11

您是否知道.NET内置支持根据应用程序的每个用户的区域设置正确格式化数字?利用用户自己的区域设置可能更好(.NET框架已经知道所有正确的设置).

但是,如果要修复应用程序以在特定区域设置中格式化数字,仍然可以使用您选择的特定区域设置,并强制.NET将其用作所有格式(不仅仅是数字)的基础:

using System.Globalization;
using System.Threading;
...
CultureInfo us = new CultureInfo("en-US");
Run Code Online (Sandbox Code Playgroud)

然后

Thread.CurrentThread.CurrentUICulture = us;
Run Code Online (Sandbox Code Playgroud)

要不就

Console.WriteLine(d.ToString("c", us));
Run Code Online (Sandbox Code Playgroud)

您应该知道,使用逗号作为千位分隔符适用于英国和美国,但不是数千应该在其他国家/地区显示

"一百二十五在美国显示为1,025,在德国显示为1.025.在瑞典,千位分隔符是一个空间"

MSDN专门讨论了这个主题,他们称之为"全球化"(即如果你需要寻找更多细节,这是一个很好的搜索术语).该页面描述了如何使用井号作为数字占位符来删除尾随零(正如Henk Holterman在之前的评论中所建议的那样).

另请参见自定义数字格式字符串.


Luk*_*keH 8

另一种选择:

decimal d = 1234.56m;
string s = d.ToString("N");    // 1,234.56
Run Code Online (Sandbox Code Playgroud)