2017-04-18 27 views

答えて

0
  1. System.Globalization.CultureInfo.InvariantCultureは同じではありませんGermande-DE)となります。構文解析して文字列に変換するときは、常にParse/TryParseの文化とFormatの方法を指定して同じ文化を使用します。 1つは英語(不変)、もう1つはドイツ語を使用すると、小数点とカンマが文化間で逆の意味を持つため、予期しない結果につながります。あなたはその文化が何であるかを知り、それが変更できない限り、スレッドが文化を提供するとは決して考えないでください。
  2. 科学的表記法を使用していない場合でも、末尾の0は小数点の左側から削除されることはありません。この場合、それでも保存されますが、指数を使用します。たぶんあなたの質問を正しく入力していないし、番号の右側(小数部分)を参照していますか?

コードサンプル:

var value = 14780M; 
var strValue = string.Format(System.Globalization.CultureInfo.GetCultureInfo("de-DE"), "{0:n0}", value) 
// strValue is equal to "14.780" 

は、ここでは、文化をミックスするとき、同じ文化が、改行を使用した場合、それが動作することを示す上記のコードです。

// OK - using InvariantCulture for both 
var culture = System.Globalization.CultureInfo.InvariantCulture; 
Console.WriteLine(Decimal.Parse(string.Format(culture, "{0:n0}", 14780), culture)); 

// OK - using de-DE for both 
culture = System.Globalization.CultureInfo.GetCultureInfo("de-DE"); 
Console.WriteLine(Decimal.Parse(string.Format(culture, "{0:n0}", 14780), culture)); 

// FAIL - mixing de-DE and InvariantCulture 
culture = System.Globalization.CultureInfo.GetCultureInfo("de-DE"); 
Console.WriteLine(Decimal.Parse(string.Format(culture, "{0:n0}", 14780), System.Globalization.CultureInfo.InvariantCulture)); 

は、何千ものseperatorsが格納されていないFiddle

0

decimalタイプを参照してください。しかし、小数点を文字列に戻すときに、それらを再構成することができます。

decimal deci = Decimal.Parse(string.Format("{0:n0}", 14780), System.Globalization.CultureInfo.InvariantCulture); // 14780 
string str = string.Format("{0:n0}", deci); // 14.780 

.NET String.Format() to add commas in thousands place for a number

.net Fiddle

関連する問題