Java中保留3位小数输出double的方式

在Java中,double数据类型用于表示浮点数,它可以存储更大范围的数值,但通常会带有很多小数位。如果我们只想保留某个double值的三位小数并进行输出,我们可以使用一些技巧来实现。

1. 使用DecimalFormat类

Java提供了DecimalFormat类,它可以格式化数字并指定要保留的小数位数。以下是使用DecimalFormat类来保留3位小数并输出double值的示例代码:

import java.text.DecimalFormat;

public class DecimalFormatExample {
    public static void main(String[] args) {
        double number = 3.141592653589793;
        DecimalFormat decimalFormat = new DecimalFormat("#.###");
        String formattedNumber = decimalFormat.format(number);
        System.out.println(formattedNumber);
    }
}

运行上述代码,将输出结果为:"3.142"。在这个示例中,我们使用了DecimalFormat类的构造函数创建了一个格式化模式,其中"#"表示可选的数字位,"."表示小数点,"###"表示保留三位小数。然后,我们使用format()方法将要格式化的double值传递给DecimalFormat对象,并将结果存储在一个字符串中,最后通过System.out.println()方法输出。

2. 使用String.format()方法

Java中的String类提供了一个format()方法,可以通过指定格式字符串来格式化数字。以下是使用String.format()方法来保留3位小数并输出double值的示例代码:

public class StringFormatExample {
    public static void main(String[] args) {
        double number = 3.141592653589793;
        String formattedNumber = String.format("%.3f", number);
        System.out.println(formattedNumber);
    }
}

运行上述代码,将输出结果为:"3.142"。在这个示例中,"%.3f"是格式化字符串,其中"%"表示要格式化的参数的开始,".3"表示保留三位小数,"f"表示浮点数类型。我们将要格式化的double值和格式化字符串传递给String.format()方法,并将结果存储在一个字符串中,最后通过System.out.println()方法输出。

3. 使用Math.round()方法进行四舍五入

如果我们只想简单地对double值进行四舍五入并保留三位小数,并不需要显示格式化为字符串,可以使用Math.round()方法。以下是使用Math.round()方法来保留3位小数并输出double值的示例代码:

public class MathRoundExample {
    public static void main(String[] args) {
        double number = 3.141592653589793;
        double roundedNumber = Math.round(number * 1000.0) / 1000.0;
        System.out.println(roundedNumber);
    }
}

运行上述代码,将输出结果为:"3.142"。在这个示例中,我们将要保留三位小数的double值乘以1000,然后使用Math.round()方法进行四舍五入,再除以1000,最后通过System.out.println()方法输出结果。

总结

在本文中,我们介绍了三种常见的Java中保留三位小数并输出double值的方法:使用DecimalFormat类、使用String.format()方法和使用Math.round()方法。根据实际需求选择合适的方法来处理浮点数的格式化。希望本文能帮助您更好地理解和使用Java中的浮点数格式化功能。

代码示例

以下是上述示例代码的完整代码:

import java.text.DecimalFormat;

public class DecimalFormatExample {
    public static void main(String[] args) {
        double number = 3.141592653589793;
        DecimalFormat decimalFormat = new DecimalFormat("#.###");
        String formattedNumber = decimalFormat.format(number);
        System.out.println(formattedNumber);
    }
}

public class StringFormatExample {
    public static void main(String[] args) {
        double number = 3.141592653589793;
        String formattedNumber = String.format("%.3f", number);
        System.out.println(formattedNumber);
    }
}

public class MathRoundExample {
    public static void main(String[] args) {
        double number = 3.141592653589793;
        double roundedNumber = Math.round(number * 1000.0) / 1000.0;
        System.out.println(roundedNumber);
    }
}

参考资料