![](/img/trans.png)
[英]C# How to Format currency in Reportviewer with Commas and Decimals
[英]How do I format a number in C# with commas and decimals?
我有一個小數點后可變位數的數字。 我想用逗號和所有十進制數格式化數字。
例如:42,023,212.0092343234
如果我使用ToString(“N”)我只得到2位小數,ToString(“f”)給我所有小數都沒有逗號。 我如何得到兩者?
不確定(現在無法測試)但是這樣的工作會怎么樣?
"#,##0.################"
string.Format("{0:#,##0.############}", value);
最多可以給你12位小數。
“所有后續數字”沒有自定義格式說明符,因此這樣的內容最接近您想要的內容。
另請注意,您受變量精度的限制。 double
精度只有15-16位數的精度,所以當您的左側變大時,小數位數將減少。
更新 :看看System.Double
類型的MSDN文檔 ,我看到:
默認情況下,Double值包含15個十進制數字的精度,但內部最多保留17位數。
所以我認為實際上是對某些事情的看法。 這樣做:
// As long as you've got at least 15 #s after the decimal point,
// you should be good.
value.ToString("#,#.###############");
這是一個想法:
static string Format(double value)
{
double wholePart = Math.Truncate(value);
double decimalPart = Math.Abs(value - wholePart);
return wholePart.ToString("N0") + decimalPart.ToString().TrimStart('0');
}
例:
Console.WriteLine(Format(42023212.0092343234));
輸出:
42,023,212.00923432409763336
哈,嗯,正如你所看到的,由於(我認為)浮點數學問題,這給出了不完美的結果。 那好吧; 無論如何,這是一個選擇。
嘗試ToString("N2")
我們來試試吧
[DisplayFormat(DataFormatString = "{0:0,0.00}")]
這是達到你期望的方式......
decimal d = 42023212.0092343234M;
NumberFormatInfo nfi = (NumberFormatInfo) CultureInfo.InvariantCulture.NumberFormat.Clone();
nfi.NumberDecimalDigits= (d - Decimal.Truncate(d)).ToString().Length-2;
Console.WriteLine(d.ToString("N",nfi));
有關NumberFormatInfo的更多詳細信息..請查看MSDN ..
http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.aspx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.