我的数据库中有一些价格存储为数据类型money
并具有以下代码:
result.RangeMinimum = (decimal)ad.RangeMinimum;
result.RangeMaximum = (decimal)ad.RangeMaximum;
输出是:
38000
和
42000
理想情况下,我想要的是这样的东西:
38, 000.00
和
42, 000.00
我怎样才能做到这一点?我的意思是,是否已经有一个现有的类内置到 .NET 框架或其他东西中?
你想达到的可以通过自定义的数字格式来完成,即对于
ToString()
方法或者String.Format()
方法
正如您“完全”指定并且在昏迷后有一个空格,标准数字格式似乎不起作用。您可以使用 轻松自定义自己的格式String.Format
。
Decimal number = 38000.01m;
string formatted = string.Format(CultureInfo.GetCultureInfo("en-US"), "{0:#, ###.00}", number);
// formatted now contains "38, 000.01"
输出是:38, 000.01
请始终记住文化信息,以便我们非美国公民可以享受应用程序。:)
可以在MSDN上找到有关使用自定义数字格式进行格式化的信息。
请注意末尾的 00,它们强制使用两位数。根据您的使用情况,您可能想要也可能不想要这种行为。如果需要,替换为##。此外,如果您在循环中使用它,请不要在每次调用 string.Format 时进行文化查找。
你可以像这样格式化它
string.Format("{0:#,#.##}", decimalValue)
string currencyString = result.RangeMinimum.ToString("C", CultureInfo.CurrentCulture);
试试这个
result.ToString("N");
使用CultureInfo.InvariantCulture
你可以定义你自己的格式
尝试十进制 ad.RangeMinimum = Decimal.Parse(result.RangeMinimum.ToString("#0.00"));