long x=0;
long.TryParse(Request.Form["x"], out x);
返回0,这是默认值。但我需要得到50
答案 0 :(得分:7)
返回0是正确的。如果查看Int64.TryParse,它会声明它只解析整数值。 50.4
不是整数值。
相反,您可以将其解析为Double,然后将其解整。
long x = 0;
Double value = 0;
if(Double.TryParse("50.4", out value))
{
x = (long)Math.Truncate(value);
}
答案 1 :(得分:1)
这是预期的行为,因为50.1不是长值。你应该做的是先将它转换为Double,然后截断它。
double x1, x2;
double.TryParse(Request.Form["x"], out x1);
x2 = Math.Truncate(x1);
如果你担心这个值太大而不适合加倍,你就必须把它作为一个字符串来操作。
long x;
var splits = Request.Form["x"].Split('.');
long.TryParse(splits[0], out x);
请注意,我没有检查分割的结果是否有效,但是这应该让你开始。