java浮点类型需要采用java.math.*这个工具包,这样的计算结果才是我们想要的。呵呵
1 import java.math.BigDecimal; 2 import java.text.NumberFormat; 3 4 5 /** 6 * 数学计算类 7 * @author mingge 8 * 9 */ 10 public class ArithUtil { 11 12 private ArithUtil(){ 13 14 } 15 16 /** 17 * 浮点数加法 18 * @param num1 19 * @param num2 20 * @return 21 */ 22 public static double add(double num1,double num2){ 23 BigDecimal v1=BigDecimal.valueOf(num1); 24 BigDecimal v2=BigDecimal.valueOf(num2); 25 return v1.add(v2).doubleValue(); 26 } 27 28 /** 29 * 浮点数减法 30 * @param num1 31 * @param num2 32 * @return 33 */ 34 public static double sub(double num1,double num2){ 35 BigDecimal v1=BigDecimal.valueOf(num1); 36 BigDecimal v2=BigDecimal.valueOf(num2); 37 return v1.subtract(v2).doubleValue(); 38 } 39 40 /** 41 * 两个数乘法 42 * @param num1 43 * @param num2 44 * @return 45 */ 46 public static double mul(double num1,double num2){ 47 BigDecimal v1=BigDecimal.valueOf(num1); 48 BigDecimal v2=BigDecimal.valueOf(num2); 49 return v1.multiply(v2).doubleValue(); 50 } 51 52 /** 53 * 两个数的除法,除不尽四舍五入 54 * @param num1 55 * @param num2 56 * @param scale 57 * @return 58 */ 59 public static double div(double num1,double num2,int scale){ 60 if (scale<0) { 61 throw new IllegalArgumentException("参数异常。。。"); 62 } 63 BigDecimal v1=BigDecimal.valueOf(num1); 64 BigDecimal v2=BigDecimal.valueOf(num2); 65 return v1.divide(v2,scale,BigDecimal.ROUND_HALF_UP).doubleValue(); 66 } 67 68 69 /** 70 * 保留两位小数 71 * @return 72 */ 73 public static double changeTwoDecimal(double d){ 74 NumberFormat nf =NumberFormat.getNumberInstance(); 75 nf.setMaximumFractionDigits(2); 76 return Double.valueOf(nf.format(d)); 77 } 78 79 /** 80 * 保留指定位数 81 * @param d 82 * @param scale 83 * @return 84 */ 85 public static double changeDecimal(double d,int scale){ 86 BigDecimal bg = new BigDecimal(d); 87 double value = bg.setScale(scale, BigDecimal.ROUND_HALF_UP).doubleValue(); 88 return value; 89 90 } 91 92 93 94 95 96 public static void main(String[] args) { 97 System.out.println(ArithUtil.changeTwoDecimal(5.60)); 98 System.out.println(ArithUtil.changeDecimal(6.356d, 5)); 99 } 100 101 102 103 104 }
这个工具类暂时写到这里,还有待继续优化...知识经济就是不停得进步吧