在运行后格式化bigdecimal数字
问题描述:
我想排序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,我怎么能删除吗?
答
你或许应该用DecimalFormat
的@rgettman的解决方案来准备,但是这是一个可能替代:
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);
}
的排序正确显示从最大到最小。您的问题是格式问题还是还有其他问题? –
'.325'在数学上与'0.325'相同。你的问题是关于输出的格式,还是你期望有不同的顺序?如果是这样 - 什么? – Mureinik
编写0.325的方法有很多 - 你认为.325与0.325差别很大吗? – laune