2017-03-07 3 views
0

二重に変換するときに文化を維持する必要があります。文化と文字列に二重の変換文化と唯一の小数点以下1桁の文字列に二重に

((12275454.8).ToString("N", new CultureInfo("sl-SI"))); 

が与える出力:

12.275.454,80

は一進の文字列に二重の変換

string.Format("{0:F1}",12275454.8) 

出力を与える:

12275454.8

第二の出力は、培養することなく、第一の出力は、小数点2桁目を四捨五入ではありません。両方の方法を組み合わせるには?

+0

小数点以下は1桁に丸められますが、除外されます。あなたはそれらの手紙がどこにあるのかを知っていますか? – FrenkyB

答えて

1

ただのフォーマット文字列を使用します最初の例の2番目の例:

((12275454.8).ToString("N1", new CultureInfo("sl-SI"))); 

編集:リクエストごとにF1からN1にフォーマットが変更されました。両方の違いは、Nがさらに千のセパレータを使用するのに対し、Fはそうではないことです。詳細はhttps://msdn.microsoft.com/en-US/library/dwhawy9k(v=vs.110).aspx

+0

F1をN1に変更すると、これを回答として受け入れます。 – FrenkyB

1

あなたはデフォルト一つとして"sl-SI"文化を設定することができます:あなたが唯一のコードのブロックのための"sl-SI"文化をしたい場合は

using System.Threading; 

... 

Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("sl-SI"); 

string test = string.Format("{0:F1}",12275454.8); 

try..finallyを追加します。

var savedCulture = Thread.CurrentThread.CurrentCulture; 

try { 
    Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("sl-SI"); 

    // Let's work with "sl-SI" for a while 
    string test = string.Format("{0:F1}",12275454.8); 
    ... 
} 
finally { 
    Thread.CurrentThread.CurrentCulture = savedCulture; 
} 
関連する問題