Out*_*mer 11 java formatting numeric numericupdown
有没有办法使用DecimalFormat(或其他一些标准格式化程序)来格式化这样的数字:
1,000,000 => 1.00M
1,234,567 => 1.23M
1,234,567,890 => 1234.57M
基本上将一些数字除以1百万,保留2位小数,并在末尾打一个"M".我已经考虑过创建一个新的NumberFormat子类,但它看起来比我想象的要复杂.
我正在编写一个API,其格式方法如下所示:
public String format(double value, Unit unit); // Unit is an enum
Run Code Online (Sandbox Code Playgroud)
在内部,我将Unit对象映射到NumberFormatters.实现是这样的:
public String format(double value, Unit unit)
{
NumberFormatter formatter = formatters.get(unit);
return formatter.format(value);
}
Run Code Online (Sandbox Code Playgroud)
请注意,因为这个,我不能指望客户端除以100万,我不能只使用String.format()而不将它包装在NumberFormatter中.
jjn*_*guy 18
String.format("%.2fM", theNumber/ 1000000.0);
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅String.format javadocs.
请注意,如果您有BigDecimal
,则可以使用以下movePointLeft
方法:
new DecimalFormat("#.00").format(value.movePointLeft(6));
Run Code Online (Sandbox Code Playgroud)
小智 5
对于那些寻找将给定数字转换为人类可读形式的人来说。
public static String getHumanReadablePriceFromNumber(long number){
if(number >= 1000000000){
return String.format("%.2fB", number/ 1000000000.0);
}
if(number >= 1000000){
return String.format("%.2fM", number/ 1000000.0);
}
if(number >= 100000){
return String.format("%.2fL", number/ 100000.0);
}
if(number >=1000){
return String.format("%.2fK", number/ 1000.0);
}
return String.valueOf(number);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21448 次 |
最近记录: |