2

ASP.NET C# では、値を投稿しています。ポストバックでは、長い値として解析する必要があります。見た目どおり、浮動小数点を含む値は非数値 (または少なくとも非 long 値) として扱われ、ポストされた値が 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);

値が大きすぎて double に収まらないことが懸念される場合は、文字列として操作する必要があります。

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

分割の結果が有効かどうかはまだ確認していませんが、これで始められるはずです。

于 2013-09-30T19:53:36.597 に答える