2

値が含まれているXMLファイルを読んでいます。私がそれらを読んだとき、それらは文字列です。

ですから、それらを変換しようとするとDoubleDecimalポイントが消えます。

decimal dec = Convert.ToDecimal("3.1922");             
MessageBox.Show(dec.ToString()); // 31922

私は何が間違っているのですか?

4

4 に答える 4

4

それはあなたの現在の文化に関連しています

decimal dec = Convert.ToDecimal("3.1922",CultureInfo.CreateSpecificCulture("de-DE"));
MessageBox.Show(dec.ToString()); //31922

dec = Convert.ToDecimal("3.1922", CultureInfo.CreateSpecificCulture("en-US"));
MessageBox.Show(dec.ToString()); //3.1922

dec = Convert.ToDecimal("3,1922", CultureInfo.CreateSpecificCulture("de-DE"));
MessageBox.Show(dec.ToString()); //3.1922
于 2012-10-28T14:53:00.870 に答える
1

現在の文化.では、千単位の区切り文字として使用されています。次の方法で確認できます。

var culture = Thread.CurrentThread.CurrentCulture;
var numberFormat = culture.NumberFormat;
string groupSeparator = numberFormat.NumberGroupSeparator; // will be .
string decimalSeparator = numberFormat.NumberDecimalSeparator; // will be ,

解析に使用するカルチャを指定できます。

decimal dec = Decimal.Parse("3.1922", new CultureInfo("en-US"));

または、文化を最新のものとして設定することもできます。

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
decimal dec = Decimal.Parse("3.1922");
于 2012-10-28T14:51:15.103 に答える
0

NumberFormat.NumberDecimalSeparatorを確認してください。

于 2012-10-28T14:54:44.817 に答える
-2

まず、これらのコードを次の場所に追加しますpublic form1() after InitializeComponent();

public Form1()
    {
        InitializeComponent();
        System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-US");
        System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
    }

次に、必要な場所でコードを使用します。

decimal dec = Convert.ToDecimal("3.1922");
        MessageBox.Show(dec.ToString());

アップデート :

グローバルな変更が必要ない場合は、小数を表示する前にコードを追加する必要があります。

private void ShowDecimal_Click(object sender, EventArgs e)
    {
        System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-US");
        System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
        decimal dec = Convert.ToDecimal("3.1922");
        MessageBox.Show(dec.ToString());
    }

アップデート2:

decimal dec = Decimal.Parse("3.1922", new CultureInfo("en-US"));
MessageBox.Show(dec.ToString());
于 2012-10-28T14:59:48.263 に答える