0

我的数据库中有一些价格存储为数据类型money并具有以下代码:

result.RangeMinimum = (decimal)ad.RangeMinimum;
result.RangeMaximum = (decimal)ad.RangeMaximum;

输出是:

3800042000

理想情况下,我想要的是这样的东西: 38, 000.0042, 000.00

我怎样才能做到这一点?我的意思是,是否已经有一个现有的类内置到 .NET 框架或其他东西中?

4

6 回答 6

3

你想达到的可以通过自定义的数字格式来完成,即对于 ToString()方法或者String.Format()方法

MDSN 自定义数字格式

于 2012-06-27T09:19:00.667 回答
3

正如您“完全”指定并且在昏迷后有一个空格,标准数字格式似乎不起作用。您可以使用 轻松自定义自己的格式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 时进行文化查找。

于 2012-06-27T09:32:15.503 回答
2

你可以像这样格式化它

string.Format("{0:#,#.##}", decimalValue)
于 2012-06-27T09:22:15.243 回答
2
string currencyString = result.RangeMinimum.ToString("C", CultureInfo.CurrentCulture);
于 2012-06-27T09:22:24.527 回答
2

试试这个

result.ToString("N");

使用CultureInfo.InvariantCulture你可以定义你自己的格式

于 2012-06-27T09:24:15.350 回答
1

尝试十进制 ad.RangeMinimum = Decimal.Parse(result.RangeMinimum.ToString("#0.00"));

于 2012-06-27T09:27:32.227 回答