0

Web サービスから次の文字列を取得します。

12.95

また

1,200.99

文字列を操作せずにこれらの値を次の値に変換するオプションはありますか?

12,95

また

1200,99

いくつかの文化オプションで試してみましたが、うまくいきませんでした...

編集

私はこれを試しました:

    //return string.Format( "{0:f2}", Convert.ToDecimal( price ) );
    //return string.Format(CultureInfo.GetCultureInfo("de-de"), "{0:0}", price);

                

    NumberFormatInfo format = new System.Globalization.NumberFormatInfo();

    format.CurrencyDecimalDigits = 2;
    format.CurrencyDecimalSeparator = ",";
    format.CurrencyGroupSeparator = "";

    return decimal.Parse(price).ToString(format);
4

5 に答える 5

7
var input = "1,200.99";

//Convert to decimal using US culture (or other culture using . as decimal separator)
decimal value = decimal.Parse(input, CultureInfo.GetCultureInfo("en-US"));

//Convert to string using DE culture (or other culture using , as decimal separator)
string output = value.ToString(CultureInfo.GetCultureInfo("de-DE"));

Console.WriteLine(output); //1200,99
于 2013-11-13T14:10:20.643 に答える
1

このようなものはどうですか:

    double number;
    double.TryParse("1,200.99", NumberStyles.Any, CultureInfo.CreateSpecificCulture("en-US"), out number);
    var formattedNumber = number.ToString(CultureInfo.CreateSpecificCulture("de-DE"));

次に、formattedNumber を返すか書き出します (必要なことは何でも)。

于 2013-11-13T14:07:54.667 に答える
0

トロンクを十分に近づけて、

このスニペットを試してください:

String curStr = "12.95";
Decimal decVal;
var valid = Decimal.TryParse(curStr, out decVal);
if (!valid) throw new Exception("Invalid format.");
String newFormat = decVal.ToString("C", System.Globalization.CultureInfo.CreateSpecificCulture("de-DE"));

toString(...)呼び出し内で、「C」の後に数値を追加して、小数点以下の桁数を指定できます。例えば「C3」。

于 2013-11-13T14:14:43.900 に答える
0

はいといいえ。まず、あなたが持っているのは文字列であるため、変更しようとしているように書式を変更することはできません。ただし、目的を達成するために、文字列を 10 進数値に解析してから、10 進数の書式設定オプションを使用して適切な方法で表示することができます。

于 2013-11-13T14:03:47.780 に答える
0

次のようなことを試すことができます。

String.Format("{0:#,###0}", 0);

または次のようになります。

string str = yourNumber.Remove(",").Replace(".",",");
于 2013-11-13T14:07:54.690 に答える