2011-07-04 4 views
1

指定された表示フォーマットに従って10進数値をフォーマットする必要があります。下のコードの"decimalValue.ToString("##,##,##,##,##,##,###")"は、現在のアプリケーションカルチャを内部的に検討し、それに応じて値を書式設定しています。ToString(..)での現在のカルチャを避ける

私はCulutreInfo.InvariantCultureを試しました。 InvariantCultureの "NumberFormat.CurrencyGroupSizes"が3に設定されており、値の書式を設定する際に考慮しているためです。

私はそれを避ける必要があります、私はアプリケーションingoreの文化を伝えることができ、指定されたdisplayformatごとに値をフォーマットすることができます。

助けてください。

decimal? de = 1234567890; 
string displayFormat = "##,##,##,##,##,##,###"; 
string result = de.Value.ToString(displayFormat); 
System.Console.WriteLine(result); 

O/P - 1234567890 (アプリケーション培養は、EN-USです)。

+0

どの言語ですか? 'tostring'は本当に便利なタグではありません! –

+0

@deepakr、 "##、##、##、##、##、##、###"は10進数の正しい形式の文字列ですか? @felix、明らかに.NET。 :) – bzlm

+0

@bzlm:.NETを知っている人には分かりやすいかもしれません;) –

答えて

1

これを試してください:あなたはインド番号/日付の整形をしたい場合は

decimal? de = 1234567890; 
string displayFormat = "##/##/##/##/##/##/###"; 
string result = de.Value.ToString(displayFormat).Replace("/", ",").TrimStart(new char[] { ',' }); 
System.Console.WriteLine(result); 
+0

トリックは良いですが、アプリケーションカルチャの "NumberFormat.CurrencyDecimalSeparator"が "/"に設定されている場合、何も機能しません。まれにそのようなことが起こることはわかっていますが、解決策はもう1つの問題を導入すべきではありません。同意する? – drg

+0

私はあなたが 'CurrencyGroupSeparator'を意味すると思います:' if(Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencyGroupSeparator == "/")//単にコンマを使うだけです –

+0

現在の文化の 'CurrencyGroupSizes'を表示形式でグループサイズに従ってIFormatProviderを実装しますか? – drg

0
using System.Globalization; 

void Main() 
{ 
    CultureInfo myCIintl = new CultureInfo("hi-IN", false); 
    Thread.CurrentThread.CurrentCulture = myCIintl; 
    double de = 1234567890; 
    Console.WriteLine(de.ToString("c")); 
} 
+0

私の質問を理解したかどうか分かりませんか? – drg

0

が、その後shahkalpeshで共有するコードが有効である(ただし、あなたがスレッドの文化を変更する必要はありません、あなたができますString.Format(IFormatProvider, String, Object[])メソッドで直接設定してください)

独自のカスタムカルチャを作成する場合は、CultureAndRegionInfoBuilderを使用して定義することを検討してください。

関連する問題