![](/img/trans.png)
[英]Double.Parse(“string”) FormatException with correct input
[英]string.Format(…, double) followed by double.Parse using same NumberFormatInfo results in FormatException. Why?
NumberFormatInfo nfi = new NumberFormatInfo()
{
CurrencySymbol = "$$s. ",
CurrencyGroupSeparator = ".",
CurrencyDecimalSeparator = ",",
NegativeSign = "-",
CurrencyNegativePattern = 2
};
double amount = double.Parse("$$s. 1.123,00", nfi);
最后一行抛出FormatException
,我不知道为什么。 我要解析的字符串实际上来自于此:
String.Format(nfi, "{0:C}", 1123.00)
您没有告诉它应该接受货币值。 为此,您需要调用一个接受NumberStyles
值并包含NumberStyles.AllowCurrencySymbol
的重载。 例如:
using System;
using System.Globalization;
class Test
{
static void Main()
{
NumberFormatInfo nfi = new NumberFormatInfo()
{
CurrencySymbol = "$$s. ",
CurrencyGroupSeparator = ".",
CurrencyDecimalSeparator = ",",
NegativeSign = "-",
CurrencyNegativePattern = 2
};
double d = double.Parse("$$s. 1.123,00",
NumberStyles.Number | NumberStyles.AllowCurrencySymbol,
nfi);
Console.WriteLine(d);
}
}
注意,货币值通常最好用decimal
不是double
精度表示。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.