方案一、四舍五入
1 2 3 4 | double f = 111231.5585; BigDecimal b = new BigDecimal(f); double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); //保留两位小数 |
方案二、DECIMALFORMAT
1、用DecimalFormat 返回的是String格式的、该类对十进制进行全面的封装、像%号、千分位、小数精度、科学计算等
1 2 3 4 5 | float price=1.2; //构造方法的字符格式这里如果小数不足2位,会以0补足 DecimalFormat decimalFormat = new DecimalFormat(".00"); //format 返回的是字符串 String p = decimalFomat.format(price); |
例:new DecimalFormat("#.00").format(3.1415926)
#.00 表示两位小数 #.0000四位小数 以此类推...
方案三、STRING.FORMAT
1 2 | double d = 3.1415926; String result = String.format("%.2f"); |
%.表示小数点前任意位数、2表示两位小数、格式后的结果为f、表示浮点型
方案四、NUMBERFORMAT
1 2 | NumberFormat ddf1 = NumberFormat.getNumberInstance() ; void setMaximumFractionDigits(int digits) |
digits 显示的数字位数、为格式化对象设定小数点后的显示的最多位、显示的最后位是舍入的
事例代码
1 2 3 4 5 | double x=23.5455; NumberFormat ddf1=NumberFormat.getNumberInstance() ; ddf1.setMaximumFractionDigits(2); String s= ddf1.format(x); |
方案五、MATH.ROUND
用Math.round计算,这里返回的数字格式的
1 2 3 4 5 | float price = 89.89; int itemNum = 3; float totalPrice = price * itemNum; //如果要求精确4位就*10000然后/10000 float num = (float)(Math.round(totalPrice*1000))/1000; |