Java保留两位小数是Java开发经常使用到的,下面给大家介绍常见的3种Java保留两位小数@mikechen
使用DecimalFormat 类
DecimalFormat 类是 Java 中用于格式化数字的工具之一,它允许你定义自定义格式,包括小数点后的位数。
如下所示:
import java.text.DecimalFormat; double number = 12.3456; DecimalFormat df = new DecimalFormat("#.##"); double result = Double.parseDouble(df.format(number)); System.out.println(result);
在上面的示例中,DecimalFormat 使用了格式字符串 # 和 ## 来保留两位小数,这将输出 12.35,同样是四舍五入到两位小数。
使用 BigDecimal 类
BigDecimal 是一个精确的十进制数值类,它可以用于精确控制小数位数。
如下所示:
import java.math.BigDecimal; public class Main { public static void main(String[] args) { double number = 12.3456; BigDecimal bd = new BigDecimal(number); bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP); // 设置小数点后保留两位,ROUND_HALF_UP 表示四舍五入 double formattedNumber = bd.doubleValue(); System.out.println(formattedNumber); } }
这个方法同样输出 12.35,使用 BigDecimal 可以避免浮点数精度问题,适用于需要精确控制小数位数的场景。
DecimalFormat 通常用于显示目的,而不是进行精确的计算,它不提供用于数字运算的方法。
BigDecimal 是为精确计算而设计的,它提供了丰富的数学操作方法,包括加法、减法、乘法、除法等,以确保计算的精确性。
如果需要高精度的数值计算,特别是在金融领域或其他需要精确计算的场景,BigDecimal 是更合适的选择。
使用 String.format 方法
String.format 允许你以指定格式格式化字符串。你可以使用 %f 占位符来表示一个浮点数,后面的 .2 表示保留两位小数。
如下所示:
public class Main { public static void main(String[] args) { double number = 12.3456; String formattedNumber = String.format("%.2f", number); System.out.println(formattedNumber); } }
输出结果也为 12.35。
这三种方法都可以用于保留两位小数,具体选择哪种方法取决于你的需求和偏好。
如果你只是需要格式化输出,DecimalFormat 和 String.format 是不错的选择。
如果需要在计算中保留小数点精度并避免浮点数精度问题,使用 BigDecimal 是更合适的方法。
mikechen
mikechen睿哥,10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!

后台回复【架构】即可获取《阿里架构师进阶专题全部合集》,后台回复【面试】即可获取《史上最全阿里Java面试题总结》