2011-03-25 209 views
0

在下面的示例中,逗号是小数点分隔符。格式化货币

我有这样的:125456,89

我想有这样的:125.456,89;其他为例:23456789,89 => 23.456.789,89

感谢,

+0

什么文化,这是,什么是你输入的类型? – 2011-03-25 07:56:13

+0

法国文化,但格式必须不取决于区域设置 – 2011-03-25 08:28:58

回答

1

平时要格式化数字作为一种货币,你应该使用 “C” 格式说明:

string formatted = price.ToString("c"); 

那将使用当前线程的默认文化来确定格式化规则,但是如果需要,您可以明确指定它。

如果没有帮助,请给我们更多的信息,并阅读这两个网页:

编辑:从您的评论,这听起来像你要么要指定一个明确的自定义数字格式字符串,建立自己的NumberFormatInfo对象(这只是在克隆现有属性后设置属性的问题)并将其传递给格式化调用。

+0

Jon,在数字之前是否有可能没有€(在我的情况下)? – 2011-03-25 10:40:25

+0

@ Kris-I:您可以尝试将货币符号更改为“”(对于自定义的NumericFormatInfo)。 – 2011-03-25 10:40:47

2

看看这个例子

double value = 12345.6789; 
Console.WriteLine(value.ToString("C", CultureInfo.CurrentCulture)); 

Console.WriteLine(value.ToString("C3", CultureInfo.CurrentCulture)); 

Console.WriteLine(value.ToString("C3", 

       CultureInfo.CreateSpecificCulture("da-DK"))); 

// The example displays the following output on a system whose 
// current culture is English (United States): 
//  $12,345.68 
//  $12,345.679 
//  kr 12.345,679 
+0

有关CurrencyDecimalSeparator和格式的更多信息,您可以查看NumberFormatInfo类http://msdn.microsoft.com/en-us/library/2xdwt6xx.aspx – Serghei 2011-03-25 08:09:37

1

您可以使用此:

125456.89.ToString("#,###.00") 

它会自动使用正确的小数点和组分隔符当前区域性。它与迄今为止的其他解决方案不同之处在于它不会自动附加货币符号。

+0

几乎不错,当我有12546,00我希望看到12.456 ,00当我使用它时我有12.456 – 2011-03-25 08:26:18

+0

@ Kris-I:改变了我的答案,看看 – 2011-03-25 08:30:28

0

another post

引用创建一个自定义的NumberFormatInfo实例,并调用toString()时传递英寸

NumberFormatInfo nfi = new NumberFormatInfo(); 
nfi.NumberGroupSeparator = "."; 
nfi.NumberDecimalSeparator = ","; 

double s = 219171; 
string result = s.ToString("N2", nfi); 

的NumberFormatInfo属于System.Globalization