我有一个内部有一些双重值的数组:
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
如何打印数组的确切字符串?
答案 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]);
}
}