DecimalFormat没有科学记数法

时间:2011-09-21 07:18:59

标签: java floating-point notation decimalformat

我有这样的DecimalFormat:

DecimalFormat df = new DecimalFormat("#,###.###");

然后我有3个方法只返回时间,电位和电流的浮点值,如果是最后两个,则返回多个小数。所以我试图得到一个输出消息,其中包含3个值,所以:

System.out.println("t="+df.format(getTime())+"(s), v="+df.format(getPotential())+"(V), i="+df.format(getI())+"(A)");

时间只计算从0到10的秒数,没有任何小数,看起来没问题,直到它达到10.然后它显示1E + 1。我只是不明白为什么,因为我已经读过API,如果我不在DecimalFormat中使用'E'字符,它不应该是科学记数法。

此外,潜力从0变为某个值,使用3位小数。看起来不错,但从0到0.01,它显示为4位小数,最后一位始终为0。

对DecimalFormat的这种行为的任何解释?我做错了什么?

1 个答案:

答案 0 :(得分:0)

在您的情况下使用printf可能会更简单:

System.out.printf("t=%d(s) v=%.2f(V) i=%.2f(A)\n", getTime(), getPotential(), getI());