java打印出一个双数组

时间:2011-11-08 06:43:23

标签: java

我有一个内部有一些双重值的数组:

private double speed[] = {50, 80, 120, 70.3};

public void printSpeed() {
    for(int i = 0; i<=speed.length-1; i++ ) {
        System.out.println(speed[i]);
    }
}

output 
50.0
80.0
12.0
70.3

wanted output
50
80
12
70.3

如何打印数组的确切字符串?

3 个答案:

答案 0 :(得分:11)

首先要注意的是:最终值正好是70.3,因为它无法在double中准确表示。如果确切的十进制值对您很重要,则应考虑使用BigDecimal代替。

听起来你想要NumberFormat省略尾随无关紧要的数字:

import java.text.*;

public class Test {

    public static void main(String[] args) {
        // Consider specifying the locale here too
        NumberFormat nf = new DecimalFormat("0.#");

        double[] speeds = { 50, 80, 120, 70.3 };
        for (double speed : speeds) {
            System.out.println(nf.format(speed));
        }
    }

}

(顺便说一下,我会强烈建议你保留[]数组声明的double[] speeds类型信息 - double speeds[]而不是{{1}}。它是更加惯用的Java,它将所有类型信息放在一个地方。)

答案 1 :(得分:1)

试试这个:

 System.out.println(String.format("%.0f", speed[i]));

答案 2 :(得分:0)

请尝试:

for(int i = 0; i < speed.length; i++ ) {
    long l = (long)speed[i];
    if(l == speed[i]) {
        System.out.println(l);
    } else {
        System.out.println(speed[i]);
    }
}