コンマと小数点で数字を表示する必要があります。
例:ケース1:10進数は432324です(これにはコンマまたは小数点はありません)432,324.として表示する必要があります
しかし432,324ではありません
ケース2:10進数は2222222.22(これにはコンマはありません)2,222,222.22として表示する必要があります
ToString("#,##0.##")
を試しました。しかし、それはフォーマットしていません
int number = 1234567890;
Convert.ToDecimal(number).ToString("#,##0.00");
結果1,234,567,890.00
を取得します。
たぶん、次のように、単に標準フォーマット文字列"N"
が必要な場合があります
number.ToString("N")
千の区切り文字と小数の固定数を使用します。 3桁ごとの区切り記号と小数点の記号は、使用する形式プロバイダー(通常はCultureInfo
)に応じて異なり、小数点以下の桁数(通常は必要に応じて2倍になります)も異なります。
フォーマットプロバイダーが異なる小数点以下の桁数を指定し、フォーマットプロバイダーを変更したくない場合は、.ToString("N2")
のように、N
の後に小数点以下の桁数を指定できます。
編集:コンマ間のグループのサイズは、
CultureInfo.CurrentCulture.NumberFormat.NumberGroupSizes
特別な形式のプロバイダーを指定しない場合。
で試す
ToString("#,##0.00")
MSDNから
*「0」カスタム書式指定子は、ゼロプレースホルダー記号として機能します。フォーマットされている値のフォーマット文字列でゼロが現れる位置に数字がある場合、その数字は結果文字列にコピーされます。そうでない場合、結果文字列にゼロが表示されます。小数点の前の左端のゼロと小数点の後の右端のゼロの位置は、結果文字列に常に存在する数字の範囲を決定します。
「00」指定子を使用すると、値は小数点の前の最も近い桁に丸められ、常にゼロからの丸めが使用されます。たとえば、「00」で34.5をフォーマットすると、値は35. *になります
同じ問題がありました。私は、スプレッドシートの「一般」形式のような数字をフォーマットしたかった。言い換えると:
1234.56 => 1,234.56
1234 => 1,234
小数点以下の最大桁数をサポートする必要がありますが、不要な場合は末尾のゼロやドットを入れないでください。もちろん、文化にやさしい必要があります。 String.Format だけを使用してそれを行うためのきれいな方法を実際に考えたことはありませんが、String.Formatと Regex.Replace のいくつかを組み合わせて NumberFormatInfo.CurrentInfo のカルチャヘルプが仕事をしました(LinqPad C#プログラム)。
string FormatNumber<T>(T number, int maxDecimals = 4) {
return Regex.Replace(String.Format("{0:n" + maxDecimals + "}", number),
@"[" + System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator + "]?0+$", "");
}
void Main(){
foreach (var test in new[] { 123, 1234, 1234.56, 123456.789, 1234.56789123 } )
Console.WriteLine(test + " = " + FormatNumber(test));
}
生産物:
123 = 123
1234 = 1,234
1234.56 = 1,234.56
123456.789 = 123,456.789
1234.56789123 = 1,234.5679
Razor Viewの場合:
[email protected]("{0:#,0.00}",item.TotalAmount)
CultureInfo us = new CultureInfo("en-US");
TotalAmount.ToString("N", us)
必要なのは「#、0.00」だけで、残りはc#が行います。
Num.ToString( "#、0.00" ")
あなたの質問はあまり明確ではありませんが、これはあなたがやろうとしていることを達成するはずです:
decimal numericValue = 3494309432324.00m;
string formatted = numericValue.ToString("#,##0.00");
formatted
には次が含まれます。,494,309,432,324.
で試す
ToString("#,##0.###")
生産物:
1234.55678 => 1,234.556
1234 => 1,234
文字列変数を使用している場合は、:
を使用して文字列を直接フォーマットしてから、フォーマット(N0、P2など)を指定できます。
decimal Number = 2000.55512016465m;
$"{Number:N}" #Outputs 2,000.55512016465
次のように末尾に数字を追加して、表示する小数点以下の桁数を指定することもできます
$"{Number:N1}" #Outputs 2,000.5
$"{Number:N2}" #Outputs 2,000.55
$"{Number:N3}" #Outputs 2,000.555
$"{Number:N4}" #Outputs 2,000.5551
string Mynewcurrency = DisplayIndianCurrency("7743450.00");
private string DisplayIndianCurrency(string EXruppesformate)
{
string fare = EXruppesformate;
decimal parsed = decimal.Parse(fare, CultureInfo.InvariantCulture);
CultureInfo hindi = new CultureInfo("en-IN");
// string text = string.Format(hindi, "{0:c}", parsed);if you want <b>Rs 77,43,450.00</b>
string text = string.Format(hindi, "{0:N}", parsed); //if you want <b>77,43,450.00</b>
return ruppesformate = text;
}