C# 用空格分隔千位来格式化数字
C# Formatting numbers with spaces delimiting thousands
我正在尝试根据以下要求格式化小数:
- 千位之间用spaces " "分隔
- 小数点由a分隔
逗号“,”(这是通过使用适当的区域性实现的,在此
克罗地亚语)
- 小数点后有两位
到目前为止我得到了这个:
String.Format(new CultureInfo("hr-HR"), "{0:# ##0.00}", input)
如果数字在小数点前有 4 位或更多位数字,则此方法效果很好。例如值 5500.5 给我 "5 500,50" 和 -5500.5 给我 "-5 500,50",这就是我想要的。
但如果数字位数较少,我会在数字前面得到一个白色 space。例如 500.5 给我 " 500,50" 而不是 "500,50"。对于负数,space 放在减号和数字之间:-500.5 给我 "- 500,50".所以我不能简单地 trim 结果。我怎样才能达到我的需要?
最简单的方法可能是在以这种方式格式化之前检查 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 做你想做的事,但为什么要把问题复杂化?
您可以使用自定义 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"
我正在尝试根据以下要求格式化小数:
- 千位之间用spaces " "分隔
- 小数点由a分隔 逗号“,”(这是通过使用适当的区域性实现的,在此 克罗地亚语)
- 小数点后有两位
到目前为止我得到了这个:
String.Format(new CultureInfo("hr-HR"), "{0:# ##0.00}", input)
如果数字在小数点前有 4 位或更多位数字,则此方法效果很好。例如值 5500.5 给我 "5 500,50" 和 -5500.5 给我 "-5 500,50",这就是我想要的。
但如果数字位数较少,我会在数字前面得到一个白色 space。例如 500.5 给我 " 500,50" 而不是 "500,50"。对于负数,space 放在减号和数字之间:-500.5 给我 "- 500,50".所以我不能简单地 trim 结果。我怎样才能达到我的需要?
最简单的方法可能是在以这种方式格式化之前检查 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 做你想做的事,但为什么要把问题复杂化?
您可以使用自定义 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"