【发布时间】:2013-03-21 11:01:08
【问题描述】:
我尝试删除千位分隔符,因此我正在试验一些代码,但它会抛出异常。我试过Convert.ToDouble、Convert.ToDecimal等。
上面写着:
Convert.ToDouble("1.234,45") 抛出 'System.FormatException' 异常
转换是从以下行引发的:Convert.ToDouble()
参数n2 使用了 culturinfo,但我也试过 "0.00" 都抛出相同的异常
整个想法是:如何删除千位分隔符,我的输入始终采用这种格式:1.234,54(逗号作为十进制,点作为千位分隔符)...我喜欢在 Textbox GotFocus Event 中使用它。所以格式应该显示为 12345,45
所以:1.254,45 应该是 1254,45 而 1.254,00 应该是 1254,00
//http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx
CultureInfo ci = CultureInfo.GetCultureInfo("NL-be");
NumberFormatInfo nfi = (NumberFormatInfo)ci.NumberFormat.Clone();
//Now force thousand separator to be empty string
nfi.NumberGroupSeparator = "";
//Format decimal number to 2 decimal places
string decimalFormatted = Convert.ToDouble("1.234,45").ToString("0.00", nfi);
string decimalFormatted = Convert.ToDouble("1.234,45").ToString("n2", nfi);
【问题讨论】:
-
对于不变的文化:
Convert.ToDouble("1.234,45", CultureInfo.InvariantCulture)否则:Convert.ToDouble("1.234,45", CultureInfo.GetCultureInfo("en-gb")) -
两行代码都给出相同的错误。
标签: c# winforms formatting string-formatting cultureinfo