长.尝试解析双精度值

本文关键字:双精度 | 更新日期: 2023-09-27 18:33:25

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

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

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

长.尝试解析双精度值

返回 0 是正确的。如果你看一下 Int64.TryParse,它声明它只解析整数值。 50.4不是整数值。

相反,您可以将其解析为双精度,然后将其四舍五入。

long x = 0;
Double value = 0;
if(Double.TryParse("50.4", out value))
{
   x = (long)Math.Truncate(value);
}

这是预期的行为,因为 50.1 不是一个长值。您应该做的是先将其转换为双精度,然后将其截断。

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);

请注意,我还没有检查拆分的结果是否有效,但这应该可以让您开始。