我正在从内部数据库中读取数据。 代码将从数据库读取的值分配为double。
if (Convert.ToDouble(PricefromString) == Price && PriceFound == false)
已从数据库中读取PricefromString。
大多数情况下代码工作正常,但是当字符串值是整数值时,我得到一个FormatException。 在这种特殊情况下,当PricefromString = 77时,我得到格式异常。 我尝试调试并检查输入字符串为ToDouble(),这是抛出异常。
编辑:PricefromString在附加的末尾有一个空白制表符。 当字符串是双值时,它工作得非常好。 76.99,77.01,但是当价格达到整数值时,我收到FormatException错误。
任何线索?
答案 0 :(得分:2)
可能还有其他内容,因为如果77是String数据类型,那么它肯定会起作用 检查它是否包含任何其他字符,如货币符号。
Double.Parse
或Convert.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.
我建议你仔细查看输入字符串的确切内容。