3

「$1,250.00」のような文字列を受け入れて、C# で 10 進数に変換するにはどうすればよいですか?

replace("$", "") and (",", "") を実行するだけですか、それともこの種の入力を処理する別の方法がありますか?

4

4 に答える 4

20

AllowCurrencySymbol オプション (およびその他のサポート オプション) を使用して Decimal.Parse を試しましたか?

var d = Decimal.Parse(input, 
  NumberStyles.AllowCurrencySymbol |
  NumberStyles.AllowDecimalPoint |
  NumberStyles.AllowThousands);
于 2009-07-31T03:34:22.563 に答える
5

今フォーマットで:)

decimal val = Decimal.Parse(
    Value.Replace(" ", ""), 
    NumberStyles.AllowThousands 
     | NumberStyles.AllowDecimalPoint 
     | NumberStyles.AllowCurrencySymbol
);

http://www.codeproject.com/KB/cs/Eduardo_Sierra.aspx

于 2009-07-31T03:33:47.790 に答える
5

私はちょうどやりReplace("$", "")ますReplace(",", "")か [?]

いいえ。まず、このようなコードは維持するのが楽しくありません。第二に、「$」は世界で唯一の通貨記号ではなく、「,」は唯一の千単位の区切り記号ではありません。つまり、あなたが考えているようなコードは、グローバリゼーションの問題を困難にします。

この種の入力を処理する別の方法はありますか?

はい。Decimal.Parseで使用NumberStyles.Currency:

string s = "$1,250.00";
decimal d = decimal.Parse(s, NumberStyles.Currency);
于 2009-07-31T03:35:54.523 に答える
-2

これでうまくいくはずです:


      string money = "$1,250.00";
      money = money.Replace('$',' ');
      decimal test = Convert.ToDecimal(money);
于 2009-07-31T03:39:46.623 に答える