如何从date.getTime()方法舍入返回值

时间:2018-01-06 01:03:06

标签: java android

我正在尝试舍入以下值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;
    }

我正在尝试将其舍入到小数点后一位。有人可以帮帮我吗?

1 个答案:

答案 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