操作后格式化bigdecimal数字

时间:2015-07-21 16:55:25

标签: java bigdecimal

我试图对BigDecimal数字进行排序。这是代码。

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    int t = scan.nextInt();
    List<BigDecimal> hs = new ArrayList<BigDecimal>();

    for (int i = 0; i < t; i++) {
        BigDecimal b = scan.nextBigDecimal();
        hs.add(b);
    }
    Collections.sort(hs, Collections.reverseOrder());
    for (int i = 0; i < hs.size(); i++) {
        System.out.println(hs.get(i));
    }
}

它工作正常,但是当我提供这样的输入时。

5
50
.325
.324
-5
100

输出:

100
50
0.325
0.324
-5

我无法理解为什么.325会转换为0.325,我该如何删除?

1 个答案:

答案 0 :(得分:1)

您可能应该使用@rgettman使用DecimalFormat的解决方案,但这是可能的替代方案:

Collections.sort(hs, Collections.reverseOrder());
for (int i=0; i < hs.size(); i++) {
    // conditionally remove a leading zero
    String value = hs.get(i).toString().replaceFirst("^(-?)0\\.", "$1.");
    System.out.println(value);
}