Convert.ToDouble()抛出格式异常

时间:2014-11-06 04:27:44

标签: c# .net parsing

我正在从内部数据库中读取数据。 代码将从数据库读取的值分配为double。

if (Convert.ToDouble(PricefromString) == Price && PriceFound == false)

已从数据库中读取PricefromString。

大多数情况下代码工作正常,但是当字符串值是整数值时,我得到一个FormatException。 在这种特殊情况下,当PricefromString = 77时,我得到格式异常。 我尝试调试并检查输入字符串为ToDouble(),这是抛出异常。

编辑:PricefromString在附加的末尾有一个空白制表符。 当字符串是双值时,它工作得非常好。 76.99,77.01,但是当价格达到整数值时,我收到FormatException错误。

任何线索?

2 个答案:

答案 0 :(得分:2)

可能还有其他内容,因为如果77是String数据类型,那么它肯定会起作用 检查它是否包含任何其他字符,如货币符号。

Double.ParseConvert.ToDouble如果无法解析给定值,则会抛出异常。

Double.TryParse返回bool表示是否成功。

试试这个:

double value;
Double.TryParse(PricefromString, out value);

通过这种方式,您可以检查它是否有效,然后在value布尔true后进行实际转换。

有关详情,请参阅以下答案:Parse v. TryParse

答案 1 :(得分:2)

  

但是当字符串值是整数值时,我得到一个FormatException。在这种特殊情况下,当PricefromString = 77时,我得到格式异常。

不,你没有。 Convert.ToDouble可以正常使用表示整数的字符串,正如您可以通过运行此代码看到的那样:

Console.WriteLine(Convert.ToDouble("77"));

事实上确实打印出77.

我建议你仔细查看输入字符串的确切内容。