将int转换为价格/货币/货币(C#)

时间:2012-06-27 09:17:41

标签: c# .net

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

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

输出结果为:

3800042000

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

我怎样才能做到这一点?我的意思是,是否已经存在一个内置于.NET框架中的现有类?

6 个答案:

答案 0 :(得分:3)

您想要实现的目标可以通过自定义数字格式完成,即用于 ToString()方法或String.Format()方法

MDSN Custom Numeric Format

答案 1 :(得分: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

请永远记住cultureinfo,以便我们非美国公民可以享受应用程序。 :)

有关使用自定义数字格式进行格式化的信息,请参见MSDN

注意最后的00,他们强制两位数。根据您的使用情况,您可能希望也可能不希望这种行为。如果需要,替换为##。另外,如果在循环中使用它,则不要在每次调用string.Format时进行文化查找。

答案 2 :(得分:2)

您可以将其格式化为

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

答案 3 :(得分:2)

string currencyString = result.RangeMinimum.ToString("C", CultureInfo.CurrentCulture);

答案 4 :(得分:2)

试试这个

result.ToString("N");

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

答案 5 :(得分:1)

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