1

簡単に聞こえますが、私が達成しようとしたとき、フォーマッターがこの変換を行う方法について在庫があります。これは、10進数に変換する必要がある文字列の例です

00.24
48.34
01.24

どうすればこれを達成できるか知っている人はいますか?? 私はこのようにしてみました

try
{
   decimal x =  Convert.ToDecimal("00.24", );
   //Which formatter do I need to pass??
   decimal x =  Convert.ToDecimal("00.24", Formatter???);
}
Catch(Exception e)
{
    throw new Exception()
}

しかし、結果が24Dであり、0.24Dが必要であるため、機能しません

4

4 に答える 4

5

あなたのシステム文化は英語ではなく、異なる数値フォーマット規則があると思います。フォーマットプロバイダーとして不変カルチャを渡してみてください。

decimal d = Convert.ToDecimal("00.24", CultureInfo.InvariantCulture);

また、使用することができますDecimal.Parse

decimal d = Decimal.Parse("00.24", CultureInfo.InvariantCulture);
于 2012-05-08T23:06:02.580 に答える
3

使ってみませんかDecimal.Parse

decimal x = Decimal.Parse("00.24");
Console.WriteLine(x);  // Prints: 00.24
于 2012-05-08T23:06:13.767 に答える
2

Decimal.TryParseが機能するはずだと思います。詳細はこちら

于 2012-05-08T23:06:09.457 に答える
1

得られる結果は、ドット.がグループ (1000) 区切り記号として扱われるためです。パーサーは単にそれを破棄し、グループ サイズが正しいかどうかをチェックしません。したがって、「20.100.200」または「1.2.3.4」も 20100200 および 1234 として解析されます。

これは、「es」などの多くのヨーロッパ カルチャで発生します。

.a をグループ区切り記号としてではなく、小数点記号として見なすカルチャを使用する必要があります。CultureInfo.InvariantCulture可能なカルチャの 1 つです (基本的には en-US と同じ構成です)。

于 2012-05-08T23:15:16.257 に答える