我尝试使用以下要求格式化小数:
到目前为止,我得到了这个:
String.Format(new CultureInfo("hr-HR"), "{0:# ##0.00}", input)
如果数字在小数点前有4位或更多位数,则效果很好。例如,值 5500.5 给了我" 5 500,50" 和 -5500.5 给了我&#34 ; -5 500,50" ,这就是我想要的。
但如果数字的位数较少,我会在数字前面留一个空格。例如 500.5 给了我" 500,50" 而不是" 500,50" 。使用负数时,空格位于减号和数字之间: -500.5 为我提供" - 500,50" 。所以我不能简单地修剪结果。我怎样才能达到我的需要?
答案 0 :(得分:9)
您可以使用自定义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"
答案 1 :(得分:0)
最简单的方法可能是在以这种方式格式化之前检查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来做你想做的事情,但为什么会使问题过于复杂?