是否有使用字符串格式化到十萬,幾百萬,十億格式化到123K,123M,123B的方式,而無需更改代碼以千,萬或十億分值?字符串格式的數字成千上萬123K,數以百萬計123M,十億123B
String.Format("{0:????}", LargeNumber)
是否有使用字符串格式化到十萬,幾百萬,十億格式化到123K,123M,123B的方式,而無需更改代碼以千,萬或十億分值?字符串格式的數字成千上萬123K,數以百萬計123M,十億123B
String.Format("{0:????}", LargeNumber)
有不同的方式來實現這一點,但對我來說最簡單,最快的方法是使用the "," custom specifier
double value = 1234567890;
// Displays 1,234,567,890
Console.WriteLine(value.ToString("#,#", CultureInfo.InvariantCulture));
// Displays 1,234,568K
Console.WriteLine(value.ToString("#,##0,K", CultureInfo.InvariantCulture));
// Displays 1,235M
Console.WriteLine(value.ToString("#,##0,,M", CultureInfo.InvariantCulture));
// Displays 1B
Console.WriteLine(value.ToString("#,##0,,,B", CultureInfo.InvariantCulture));
您可以實現ICustomFormatter,其將由千,萬或十億的價值,並使用它像這樣:
var result = string.Format(new MyCustomFormatter(), "{0:MyFormat}", number);
該實現應該是ICustomFormatter和IFormatProvider接口 – KD2ND 2018-01-18 11:26:45
我使用的格式,這個組合在一個擴展方法(只需將其添加到您的項目,並享受)
public static string ToKMB(this decimal num)
{
if (num > 999999999)
{
return num.ToString("0,,,.###B", CultureInfo.InvariantCulture);
}
else
if (num > 999999)
{
return num.ToString("0,,.##M", CultureInfo.InvariantCulture);
}
else
if (num > 999)
{
return num.ToString("0,.#K", CultureInfo.InvariantCulture);
}
else
{
return num.ToString(CultureInfo.InvariantCulture);
}
}
用途:
((decimal)235).ToKMB();
// 235
((decimal)1235).ToKMB();
// 1.2K
((decimal)6271235).ToKMB();
// 6.27M
((decimal)93246571235).ToKMB();
// 93.247B
它更大的數字,並喜歡它返回更多的細節。你還可以添加一些重寫它支持
int
,long
和double
沒有鑄造。
如果我使用它作爲「#,## 0 ,,,。00B」這是四捨五入的最後一個小數位,但我不想要它。 – pxm 2014-03-11 09:09:17
value.ToString( 「0 ,,,。#B」,CultureInfo.InvariantCulture)=> 1.2B – NIBERIUM 2015-04-20 12:45:12
任何方式與貨幣使用此? – 2017-05-22 14:14:45