我目前正在尝试将字符串“277.968”解析为十进制,但我收到一个FormatException异常。
我已经读过我需要以这种方式执行十进制解析:
string str = "277.968";
decimal.Parse(str, CultureInfo.InvariantCulture);
不过,我收到了上述例外情况。
我该怎么办?
编辑:修正了浮动到小数
答案 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);