2

在 ASP.NET C# 中,我发布了一个值,在回发中我需要将其解析为一个长值。看起来,带有浮点的值被视为非数字(或至少非长值),并且如果发布的值为 50.1

long x=0;
long.TryParse(Request.Form["x"], out x);

返回 0,即默认值。但我需要得到 50

4

2 回答 2

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);
}
于 2013-09-30T19:54:57.303 回答
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);

请注意,我没有检查拆分结果是否有效,但这应该可以帮助您入门。

于 2013-09-30T19:53:36.597 回答