小数点java

时间:2015-04-23 10:36:53

标签: java decimal

我写了这段代码:

double sums = Math.round(sum) * 100.00 / 100.00;

我只在小数点后得到一个0(例如10.0),但我想要10.00

有什么不对吗?

2 个答案:

答案 0 :(得分:1)

我怀疑你打算

double sums = Math.round(sum * 100) / 100.0;

这会将数字四舍五入到小数点后两位。

  

我只在小数点后得到一个0(例如10.0),但我想要10.00。

号码10.0 == 10.00除格式外没有区别。您可以格式化String并同时对其进行舍入。

double sum = 9.999;
String fmt = String.format("%.2f", sum);
// fmt = "10.00"

一个数字只是一个数字,它没有固有的格式。

答案 1 :(得分:0)

使用String.format确保只获得您想要的数字

例如,如果我写

public static void main(String[] args) {
        double sum=23.90;
        double sums = Math.round(sum * 100) / 100.0;

        System.out.println(sums);

    }

它会给我输出 最多一个小数点 即23.9

但如果我将相同的代码更改为

public static void main(String[] args) {
        double sum=23.945;
        double sums = Math.round(sum * 100) / 100.0;
        System.out.println(sums);
    }

我输出到两位小数,即 23.95

但是使用String格式,您将始终确定要打印多少小数

public static void main(String[] args) {
        double sum=23.945;
        double sums = Math.round(sum * 100) / 100.0;
        String fmt = String.format("%.1f", sums);
        System.out.println(fmt);
    }

输出24.0 .. 但它有圆角问题 所以更好的做法是首先使用它转换为字符串,然后修剪字符