固定小数后的位数

时间:2016-02-01 14:53:45

标签: java numbers double decimal

我有很多double个数字来描述不同的对象。

例如:

 Object A
    double a = 10.12
    double b = 10.1223
    double c = 10.12345

 Object B
    double a = 10.12
    double b = 10.1223
    double c = 10.12345

...我希望在十进制之后有固定的位数,例如,对象A必须在十进制之后有五(5)位数,而对象B在十进制之后必须有两(2)位数后四舍五入。我希望实现这样的目标:

 Object A
    10.12000
    10.12230
    10.12345

Object B
    10.12
    10.12
    10.12

我尝试setMinimumFractionDigits(5)setMinimumFractionDigits(2)它有效,但我有很多对象,首先必须有十位后的一位数,其他需要5等。这是一个大项目,是面向对象的。

我知道如何实现这一目标?

3 个答案:

答案 0 :(得分:2)

请通过创建DecimalFormat obj来更改您的代码,并将其用于格式化Double个对象。

private static DecimalFormat fiveDigitFormat= new DecimalFormat(".#####");
private static DecimalFormat twoDigitFormat= new DecimalFormat(".##");

fiveDigitFormat.format(objA);
twoDigitFormat.format(objB);

答案 1 :(得分:1)

如评论中所述,请查看DecimalFormat

对你来说,它看起来如下:

// For Object A
DecimalFormat dfForObjA = new DecimalFormat("#.#####");
dfForObjA.setRoundingMode(RoundingMode.CEILING);
for (double d : A) {   // Assuming A is already declared and initialized
    System.out.println(dfForObjA.format(d));
}

// For Object B
DecimalFormat dfForObjB = new DecimalFormat("#.##");
dfForObjB.setRoundingMode(RoundingMode.CEILING);
for (double d : B) {   // Assuming B is already declared and initialized
    System.out.println(dfForObjB.format(d));
}

注意:对于每个循环,我不太确定如何与您的对象完全一致地实现它,因为它不清楚它们究竟是什么或它们是如何&#39 ;重新定义。

答案 2 :(得分:1)

您也可以使用:

double a = 10.12;
double b = 10.1223;
double c = 10.12345;
System.out.println(String.format("%.5f", a));
System.out.println(String.format("%.5f", b));
System.out.println(String.format("%.2f", c));

打印:

10.12000
10.12230
10.12