我需要一個字符串轉換成的{###}。###。###貨幣格式,##C#字符串格式問題爲錢
是
的5461497702600值
將成爲
54.614.977.026,00
數量變得過大。
我使用
return string.Format("{0:#" + (val < 1000 ? "" : "\\.") + "##0.00}", val);
它返回的例子
54614977.026,00
(只有一個點)
任何幫助,將不勝感激
我需要一個字符串轉換成的{###}。###。###貨幣格式,##C#字符串格式問題爲錢
是
的5461497702600值
將成爲
54.614.977.026,00
數量變得過大。
我使用
return string.Format("{0:#" + (val < 1000 ? "" : "\\.") + "##0.00}", val);
它返回的例子
54614977.026,00
(只有一個點)
任何幫助,將不勝感激
比你似乎認爲,只要使用更簡單:
decimal number = 5461497702600M;
string s = string.Format("{0:#,##0.00}", number);
它使用decimal
是必不可少的這裏。 #,## 0.00圖片是這樣做的一種非常標準的方式,輸出將使用系統默認符號,並且fromatter足夠智能以根據需要重複3位數分組。使用以下過載到指定文化,這個例子與InvariantCulture的總是會使用小數點:
string s = string.Format(System.Globalization.CultureInfo.InvariantCulture,
"{0:#,##0.00}", number);
那......太棒了。謝謝。出於好奇,當你說使用小數時必不可少,爲什麼?以及如果我嘗試使用雙擊會發生什麼?這是我可能擁有的兩種類型,儘管我認爲我在整個使用十進制。 – Kamal 2010-03-19 09:51:04
@Kamal,如果你使用double,你會在最後一個數字中看到舍入錯誤(比使用小數快得多)。爲了錢,使用十進制。注意'M'後綴。 – 2010-03-19 09:53:37
一個小挑逗:這將把數字格式設置爲'5.461.497.702.600,00',而問題指定它應該是'54.614.977.026,00'。在應用格式之前,請將數字除以100。 – LukeH 2010-03-19 09:58:05
我想你想要做什麼取決於當前的文化/區域設置你的機器的ngs。在你的情況,您要使用逗號作爲小數和小數逗號,千的分隔
是的,同意了。然而,我們正在使用一種文化背景,這種背景不適合該國的貨幣形式。所以我需要以編程方式進行。 – Kamal 2010-03-19 09:34:24
您可以使用,需要一個format string和IFormatProvider
的ToString
overload。
就用N2
作爲格式字符串和使用CultureInfo
- 例如,de-DE
- 有.
作爲組分隔符和,
作爲小數點符號:
return (val/100).ToString("N2", new CultureInfo("de-DE"));
當心,如果val
是一個整數類型而不是浮點類型,那麼除以100將失去兩個最低有效數字。爲了避免這種情況,你可以將當整數值轉換爲decimal
:
return (val/100M).ToString("N2", new CultureInfo("de-DE"));
+1也很乾淨的解決方案。 – Kamal 2010-03-19 11:23:22
出於好奇,是'5461497702600m.ToString(「C」,someculture)'這裏someculture是一種文化,有你想要的東西(德例如-DE),或者更確切地說是一個貨幣符號設置爲空字符串的自定義文化,不夠?如果其他人可以這樣做,我絕不會手動執行此類操作:) – OregonGhost 2010-03-19 09:57:26
請參考以下許多答案,不要忘記您可以避免硬編碼分隔符(例如,不要認爲Decimal分隔符是在所有文化中都是一個時代符號)。請參閱http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.currencydecimalseparator.aspx。完整列表:CurrencyDecimalSeparator,NumberDecimalSeparator,CurrencyGroupSeparator和NumberGroupSeparator。 – rohancragg 2010-03-19 10:24:36
+1 @ OregonGhost/@ rohan cragg。我也很感謝所有的答案。承認我正在重新發明輪子。作爲解釋,原始規範(客戶錯誤翻譯)只請求一個。和那個,這就是我如何解決問題的方法。現場即將上線,當然,我們瞭解真相:)乾杯 – Kamal 2010-03-19 11:23:53