WP8 - C# - 将字符串解析为十进制格式异常

时间:2014-03-01 14:34:59

标签: c# parsing windows-phone-8 decimal culture

我目前正在尝试将字符串“277.968”解析为十进制,但我收到一个FormatException异常。

我已经读过我需要以这种方式执行十进制解析:

string str = "277.968";
decimal.Parse(str, CultureInfo.InvariantCulture);

不过,我收到了上述例外情况。

我该怎么办?

编辑:修正了浮动到小数

1 个答案:

答案 0 :(得分:3)

  

打印字符串的长度,据报道它长达80个字符。

是的,那就是问题。您的字符串不是"277.968" - 它是"277.968\0\0\0\0\0\0(...)" - 并且无法解析。

我的猜测是您从某种TextReader读取的内容,但忽略了Read的返回值,这是具有的字符数已被阅读。

例如,如果您当前的代码是有效的:

char[] risul = new char[80];
reader.Read(risul, 0, risul.Length);
decimal value = decimal.Parse(new string(risul), CultureInfo.InvariantCulture);
那么你应该改为:

char[] risul = new char[80];
int charsRead = reader.Read(risul, 0, risul.Length);
decimal value = decimal.Parse(new string(risul, 0, charsRead),
                              CultureInfo.InvariantCulture);

...虽然这仍然假设您在Read的一次调用中正在阅读所有相应的数据,但情况并非如此。你可能只想要:

string data = reader.ReadToEnd();
decimal value = decimal.Parse(data, CultureInfo.InvariantCulture);