-2

誰かが私を助けることができますか?それが無知なのか知識不足なのかはわかりませんが、本当に迷惑です。123.456,22この10進形式とを比較する最良の方法は何ですか123,456.22

私はこの方法を試します:

10進数のval1=0; 10進数のval2=0;

decimal.TryParse( "123,456.22"、out val1);

decimal.TryParse( "123.456,22"、out val2);

コンピューターに123.456,22フォーマットがある場合は、decimal.TryParse(123,456.22、out val1)-> val1=0;を試してください。

今私はコードを使用しています:「、」または「。」で分割します。、私はそれを行うためのより簡単な方法が何であるか疑問に思っています。

4

4 に答える 4

1

Decimal.Parse メソッドを使用します: http://msdn.microsoft.com/en-us/library/cafs243z.aspx

Decimal.Parse(value);

オーバーロードされたメソッドを使用してカルチャを渡すことができます ( http://msdn.microsoft.com/en-us/library/t7xswkc6.aspx )

Decimal.Parse(value, new CultureInfo("en-GB"));
于 2013-02-18T08:28:52.670 に答える
0

これを試して:

decimal d1;
string s1 = "123,456.22";
if (Decimal.TryParse(s1, 
    System.Globalization.NumberStyles.Any, 
    System.Globalization.CultureInfo.GetCultureInfo("ro-RO"), 
    out d1))
{
    Console.WriteLine("Success: {0} converted into {1} using the ro-RO number format", 
        s1, d1);
}
else if (Decimal.TryParse(s1, out d1))
{
    Console.WriteLine("Success: {0} converted into {1} using the {2} number format", 
        s1, d1,System.Globalization.CultureInfo.CurrentCulture.Name);
}
    }
}

ウィキペディアの次の記事が興味深いかもしれません: Decimal mark .

于 2013-02-18T08:39:29.400 に答える
0

123.456,22区切り文字が異なりますが、123,456.22ある場合は point( .) であり、別の場合はコンマ( ,) です。Parse を使用するだけでは、現在のカルチャに依存するため、そのうちの 1 つが解析に失敗します。

このような場合、関連するものを構築し、NumberFormatInfo必要に応じて小数点区切り記号 ( NumberDecimalSeparator) と千単位区切り記号 ( NumberGroupSeparator)を設定する必要があります。

したがって、TryParse を使用する必要があります。それが false を返す場合は、このようにカスタムのものを構築し、Parse でパラメーターとして使用できるようにします。

// check with TryParse first and if it returns false then try as below
NumberFormatInfo numinf = new NumberFormatInfo();
numinf.NumberDecimalSeparator= ",";
numinf.NumberGroupSeparator= ".";
decimal.Parse("your failed tryparse", numinf);
于 2013-02-18T08:44:07.047 に答える
0
decimal d1;
string s1 = "123,456.22";
if (Decimal.TryParse(s1, 
    System.Globalization.NumberStyles.Any, 
    System.Globalization.CultureInfo.GetCultureInfo("ro-RO"), 
    out d1))
{
    Console.WriteLine("Success: {0} converted into {1} using the ro-RO number format", 
        s1, d1);
}
else if (Decimal.TryParse(s1, out d1))
{
    Console.WriteLine("Success: {0} converted into {1} using the {2} number format", 
        s1, d1,System.Globalization.CultureInfo.CurrentCulture.Name);
}
    }
}

コンソールアプリでしか使えない??

于 2013-03-01T04:28:03.693 に答える