小数点java

小数点java,java,decimal,Java,Decimal,我写了这段代码: double sums = Math.round(sum) * 100.00 / 100.00; 我在小数点后只得到一个0(例如10.0),但我想要10.00 有什么不对劲吗?我想你是有意的 double sums = Math.round(sum * 100) / 100.0; 这将把数字四舍五入到小数点后2位 我只得到小数点后的一个0(例如10.0),但我想要10.00 数字10.0==10.00除了格式之外没有区别。您可以格式化字符串并同时将其四舍五入 double

我写了这段代码:

double sums = Math.round(sum) * 100.00 / 100.00;
我在小数点后只得到一个
0
(例如
10.0
),但我想要
10.00

有什么不对劲吗?

我想你是有意的

double sums = Math.round(sum * 100) / 100.0;
这将把数字四舍五入到小数点后2位

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

数字
10.0
==
10.00
除了格式之外没有区别。您可以格式化字符串并同时将其四舍五入

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

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

使用
String.format
确保只获得所需的数字

例如,如果我写

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

        System.out.println(sums);

    }
它将给我输出 小数点后一位以内 i、 e
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

但对于字符串格式,您将始终确定要打印多少个小数

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但它存在舍入问题
因此,更好的做法是先将其转换为字符串,然后修剪不重复的字符。。。