关于将值舍入到某个小数点

时间:2012-08-22 17:32:14

标签: java rounding

我正在通过类十进制格式,因为我尝试在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

请告知我们为实现同样的目的而提供给我们的其他替代方案.. !!

3 个答案:

答案 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;
}