【发布时间】:2016-05-17 20:34:41
【问题描述】:
我正在尝试解析一个非常小的数字(范围从 0 到 20)。所以,我知道这不是尺寸问题。但是我的代码仍然一直返回 false。
parseResult = int.TryParse(tempResult.ToString().Trim(), out Result);
这里的 tempResult 是一个对象类型,因为值可以是整数或字符串。我收到的值是一个整数(准确地说是 2)。然而, parseResult 总是错误的。
我在这里错过了什么?
编辑: 显然数据库中的值保存为十进制,因此实际值为 2M,而不是 2.0000。现在,如何解决这个问题。我不需要尾随零,只需要小数点前的值。
编辑: 该值可以是字符串或小数。我只想使用小数部分。我总是可以直接转换为十进制,但如果值是字符串,那将不起作用。
编辑:
全功能:
object tempResult = bqObject.GetSingleValue(strQuery);
//get value from the system param table
if (tempResult == null)
{
tempResult = bqObject.GetSingleValue(strSysParamQuery);
}
//validate database values
if (tempResult == null)
{
throw new BaseException("DB100001");
}
else
{
parseResult = int.TryParse(tempResult.ToString().Trim(), out Result);
if (!parseResult)
{
throw new BaseException("DB100002");
}
}
第一个查询读取一个 nvarchar 列,而第二个查询读取十进制列。所以,我试图将两者解析为字符串,然后解析为 int。问题是当值以十进制形式出现时,tempResult.ToString().Trim() 行将其转换为2M 而不是2.0000。这就是函数失败的原因。
【问题讨论】:
-
做 var test = tempResult.ToString().Trim();然后调试并查看值。看起来还好吗?
-
tempResult.ToString().Trim() 的确切值是多少?结果是什么类型?
-
你能给我们举一个
tempResult的值的例子,它支持返回true吗? -
我打赌你的字符串只是对象。
-
如果您已经有一个
Int32的对象,为什么还要将其转换为字符串并首先调用TryParse?
标签: c#