在项目中经常出现double类型的数据在显示时0000000000...1或者999999999999...9等情况出现,这种情况有很多解决情况,可以从后端解决也可以从前端解决。
前端解决:
方法一:使用toFixed()函数
toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。
使用语法为:NumberObject.toFixed(num);其中num是指规定小数位数,是 0 ~ 20 之间的值,包括 0 和 20。如果省略了该参数,将用 0 代替。
var num = 557127.1299999999;
num.toFixed(2);
输出结果为:557127.13
后端使用java解决:
方法一:使用BigDecimal对象
前面说过详细的说明,不做详细说明了,详解见 https://www.jianshu.com/p/b2708c1b2c77
// import java.math.BigDecimal;
double num = 557127.1299999999;
num = new BigDecimal(num).setScale(7, BigDecimal.ROUND_HALF_UP).toPlainString();
System.out.println("num:" + "\n" + num);
String str = "557127.1299999999";
str = new BigDecimal(Double.parseDouble(str)).setScale(7, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println("str :" + "\n" + str );
方法二:使用DecimalFormat对象
// java.text.DecimalFormat;
double num = 557127.1299999999;
DecimalFormat df = new java.text.DecimalFormat("#.00");
String str = df.format(num);
System.out.println("str :" + "\n" + str );
以上就是一些简单的处理java中double类型数据计算导致精度缺失的解决办法。