欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 综合教程 >内容正文

综合教程

Java保留小数点后两位,解决精度丢失问题

发布时间:2023/12/29 综合教程 56 生活家
生活随笔 收集整理的这篇文章主要介绍了 Java保留小数点后两位,解决精度丢失问题 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

实例一、保留小数点后两位,四舍五入

//使用BigDecimal,更精准的计算,避免小数点后出现精准度丢失现象。比如:25.230000000001
//初始化值是Stirng类型,如果是Double,也转为String:Double.toString(double)方法
//小数点保留两位
BigDecimal num1 = new BigDecimal("0.00");
BigDecimal num2 = new BigDecimal("0.00");


BigDecimal bd1 = new BigDecimal("256");
BigDecimal bd2 = new BigDecimal(Double.toString(0.22));
//加减乘除操作,精度取小数点后两位
num1 = bd1.multiply(bd2).setScale(2, BigDecimal.ROUND_HALF_UP); 
num2 = bd1.subtract(num1).setScale(2, BigDecimal.ROUND_HALF_UP);

BigDecimal 处理小数

setScale(1) 表示保留一位小数,默认用四舍五入方式

setScale(1,BigDecimal.ROUND_DOWN)直接删除多余的小数位,如2.35会变成2.3

setScale(1,BigDecimal.ROUND_UP)进位处理,2.35变成2.4

setScale(1,BigDecimal.ROUND_HALF_UP)四舍五入(5则向上入),2.35变成2.4

setScaler(1,BigDecimal.ROUND_HALF_DOWN)四舍五入(5则向下舍),2.35变成2.3

实例二、展示结果为百分比格式,百分比后面两位小数

DecimalFormat df = new DecimalFormat("0.00%");
//入参为double数字
BigDecimal bd = new BigDecimal(150 / 120);    
//因为是百分比,这里数字是4
String billRate = df.format(bd.setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue());

总结

以上是生活随笔为你收集整理的Java保留小数点后两位,解决精度丢失问题的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。