7

私のコードはこのようなものです

string asd = "24000.0000";
int num2;
if (int.TryParse(asd, out num2))
{

    // It was assigned.
}

コードの実行が if ケースに入らないようになりました。これは、try parse が機能していないことを意味します。コードの何が問題なのか教えてください。

注: 最初のステップでは、値 24000.0000 が意図的に string として割り当てられます。

4

5 に答える 5

10

小数を許可するパラメーターを指定できるようにする2 番目のTryParseオーバーロードを使用します。NumberStyle

int val =0;
var parsed = int.TryParse("24000.0000", 
                NumberStyles.Number, 
                CultureInfo.CurrentCulture.NumberFormat, 
                out val);
于 2013-07-22T13:37:37.680 に答える
8

の場合、int小数点以下は使用できません。

編集:

string asd = "24000.000";

int dotPos = asd.LastIndexOf('.');

if (dotPos > -1) {
   asd = asd.Substring(0, dotPos);
} 

int num2;

if (int.TryParse(asd, out num2))
{
 // It was assigned.
}

編集:

他の回答で指摘されているように、変換を処理するより良い方法があります。

于 2013-07-22T13:30:36.797 に答える
3

この方法については、MSDN ドキュメントのコメント セクションを参照してください。

http://msdn.microsoft.com/en-us/library/f02979c7.aspx

文字列には、空白、記号、および数字のみを含めることができます。

于 2013-07-22T13:33:23.620 に答える
2

これはあなたのために働くはずです:

string asd = "24000.0000";
int num2;
decimal tmpNum;
if (decimal.TryParse(asd, out tmpNum))
{
    num2 = (int)tmpNum;
    // It was assigned.
}
于 2013-07-22T13:33:15.373 に答える
2

を解析するように要求しましたが、またはintが与えられました。数値を解析できないため、false が返され、ゼロに設定されます。doublefloatnum2

于 2013-07-22T13:33:43.027 に答える