在 ASP.NET C# 中,我发布了一个值,在回发中我需要将其解析为一个长值。看起来,带有浮点的值被视为非数字(或至少非长值),并且如果发布的值为 50.1
long x=0;
long.TryParse(Request.Form["x"], out x);
返回 0,即默认值。但我需要得到 50
返回 0 是正确的。如果您查看Int64.TryParse它声明它只解析整数值。50.4
不是整数值。
相反,您可以将其解析为 Double 然后将其舍入。
long x = 0;
Double value = 0;
if(Double.TryParse("50.4", out value))
{
x = (long)Math.Truncate(value);
}
这是预期的行为,因为 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);
请注意,我没有检查拆分结果是否有效,但这应该可以帮助您入门。