ASP.NET C# では、値を投稿しています。ポストバックでは、長い値として解析する必要があります。見た目どおり、浮動小数点を含む値は非数値 (または少なくとも非 long 値) として扱われ、ポストされた値が 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);
値が大きすぎて double に収まらないことが懸念される場合は、文字列として操作する必要があります。
long x;
var splits = Request.Form["x"].Split('.');
long.TryParse(splits[0], out x);
分割の結果が有効かどうかはまだ確認していませんが、これで始められるはずです。