値が含まれているXMLファイルを読んでいます。私がそれらを読んだとき、それらは文字列です。
ですから、それらを変換しようとするとDouble
、Decimal
ポイントが消えます。
decimal dec = Convert.ToDecimal("3.1922");
MessageBox.Show(dec.ToString()); // 31922
私は何が間違っているのですか?
値が含まれているXMLファイルを読んでいます。私がそれらを読んだとき、それらは文字列です。
ですから、それらを変換しようとするとDouble
、Decimal
ポイントが消えます。
decimal dec = Convert.ToDecimal("3.1922");
MessageBox.Show(dec.ToString()); // 31922
私は何が間違っているのですか?
それはあなたの現在の文化に関連しています
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
現在の文化.
では、千単位の区切り文字として使用されています。次の方法で確認できます。
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");
NumberFormat.NumberDecimalSeparatorを確認してください。
まず、これらのコードを次の場所に追加します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());