我正在通过类十进制格式,因为我尝试在Java中格式化十进制数字,最多2位小数或3位小数。
我想出了如下所示的解决方案,但也请让我知道java提供给我们的任何其他替代方案来实现同样的事情。!!
import java.text.DecimalFormat;
public class DecimalFormatExample {
public static void main(String args[]) {
//formatting numbers upto 2 decimal places in Java
DecimalFormat df = new DecimalFormat("#,###,##0.00");
System.out.println(df.format(364565.14));
System.out.println(df.format(364565.1454));
//formatting numbers upto 3 decimal places in Java
df = new DecimalFormat("#,###,##0.000");
System.out.println(df.format(364565.14));
System.out.println(df.format(364565.1454));
}
}
Output:
364,565.14
364,565.15
364,565.140
364,565.145
请告知我们为实现同样的目的而提供给我们的其他替代方案.. !!
答案 0 :(得分:1)
如果您为重新定义DecimalFormat
而烦恼,或者您怀疑自己需要多次重新定义,则还可以使用String.format()
进行内联格式化。检查syntax for Formatter
,尤其是数字子标题。
答案 1 :(得分:0)
以下是圆形的替代方案......
double a = 123.564;
double roundOff = Math.round(a * 10.0) / 10.0;
System.out.println(roundOff);
roundOff = Math.round(a * 100.0) / 100.0;
System.out.println(roundOff);
输出
123.6
123.56
倍数和除法时0
的数量决定四舍五入。
答案 2 :(得分:0)
这是一种方法。
float round(float value, int roundUpTo){
float x=(float) Math.pow(10,roundUpTo);
value = value*x; // here you will guard your decimal points from loosing
value = Math.round(value) ; //this returns nearest int value
return (float) value/p;
}