[英]C# Formatting numbers with spaces delimiting thousands
我正在嘗試使用以下要求格式化小數:
到目前為止我得到了這個:
String.Format(new CultureInfo("hr-HR"), "{0:# ##0.00}", input)
如果數字在小數點前有4位或更多位,則此方法很有效。 例如,值5500.5給我“5 500,50” ,- 5500.5給我“-5 500,50” ,這就是我想要的。
但如果數字的位數較少,我會在數字前面留一個空格。 例如500.5給了我“500,50”而不是“500,50” 。 並且使用負數,空格位於減號和數字之間: -500.5給出“ - 500,50” 。 所以我不能簡單地修剪結果。 我怎樣才能達到我的需要?
您可以使用自定義NumberFormatInfo
格式化數字。
var nfi = new NumberFormatInfo();
nfi.NumberGroupSeparator = " "; // set the group separator to a space
nfi.NumberDecimalSeparator = ","; // set decimal separator to comma
然后使用格式化數字
number.ToString("N2", nfi); // numeric format with 2 decimal digits
這給了你
(5500.5).ToString("N2", nfi) // "5 500,50"
(-500.5).ToString("N2", nfi) // "-500,50"
(-5500.5).ToString("N2", nfi) // "-5 500,50"
最簡單的方法可能是在以這種方式格式化之前檢查input
是否超過1000 /小於-1000。
if(input >= 1000 || input <= -1000){
// use String.Format(new CultureInfo("hr-HR"), "{0:# ##0.00}", input)
}else{
// just use input.ToString()?
}
可能有一種方法可以強制string.format做你想做的事情,但為什么過於復雜化這個問題呢?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.