我正在尝试舍入以下值1.48824E9
,即在date.getTime()方法内返回。
这是我尝试过的但它不起作用:
private double x;
private double y;
DecimalFormat df;
private double z;
private String g;
double a;
public GraphPoints(Date x, double y) {
df = new DecimalFormat("#.#");
df.setRoundingMode(RoundingMode.CEILING);
a = x.getTime();
g = df.format(a);
z = Double.parseDouble(g);
System.out.println("THIS IS THE ROUNDED VALUE: " + z);
this.x = z;
this.x = z;
this.y = y;
}
我正在尝试将其舍入到小数点后一位。有人可以帮帮我吗?
答案 0 :(得分:0)
你的号码中没有任何小数位(我的意思是默认情况下你有2位小数.00
,但我认为它不是你想要的)。 "1.48824E9"
是“1488240000.00”双倍的科学记数法。请考虑以下代码段:
Double d = Double.parseDouble("1.48824E9");
NumberFormat formatter = new DecimalFormat("#0.00");
System.out.println(formatter.format(d));
System.out.println(d);
输出:
1488240000.00
1.48824E9
不确定如何获得它,因为date.getTime()
返回long而Long.toString()
未转换为科学记数法。因此,如果您想从"1.5"
打印"1.48824E9"
,您可以这样做,例如:
Double d = Double.parseDouble("1.48824E9");
d = d / Math.pow(10, 9);
NumberFormat formatter = new DecimalFormat("#0.0");
System.out.println(formatter.format(d));
输出:
1.5
如果您真的想要更改双倍的值,可以这样做:
Double d = Double.parseDouble("1.48824E9");
d = d / Math.pow(10, 9);
d = Math.round (d * 10.0) / 10.0;
System.out.println(d);
输出:
1.5