簡體   English   中英

C#格式化數字,空格分隔數千

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM