public class Test1 { public static void main(String[] args) { System.out.println(3/2);//1 float float_a = 0.05f; float float_b = 0.01f; System.out.println(float_a+float_b);//0.060000002 double double_a = 0.05d; double double_b = 0.01d; System.out.println(double_a+double_b);//0.060000000000000005 BigDecimal bigDecimal_a1 = new BigDecimal(float_a+""); BigDecimal bigDecimal_b1 = new BigDecimal(float_b+""); System.out.println(bigDecimal_a1.add(bigDecimal_b1));//0.06 BigDecimal bigDecimal_a2 = new BigDecimal(double_a+""); BigDecimal bigDecimal_b2 = new BigDecimal(double_b+""); System.out.println(bigDecimal_a2.add(bigDecimal_b2));//0.06 } }
import java.math.BigDecimal; public class MathTool { /* * 加法运算 */ public static String jia(double d1,double d2){ BigDecimal b1 = new BigDecimal(d1+""); BigDecimal b2 = new BigDecimal(d2+""); return b1.add(b2).toPlainString(); } /* * 减法运算 */ public static String jian(double d1,double d2){ BigDecimal b1 = new BigDecimal(d1+""); BigDecimal b2 = new BigDecimal(d2+""); return b1.subtract(b2).toPlainString(); } /* * 乘法运算 */ public static String cheng(double d1,double d2){ BigDecimal b1 = new BigDecimal(d1+""); BigDecimal b2 = new BigDecimal(d2+""); return b1.multiply(b2).toPlainString(); } /* * 除法运算 */ public static String chu(double d1,double d2,int point){ BigDecimal b1 = new BigDecimal(d1+""); BigDecimal b2 = new BigDecimal(d2+""); return b1.divide(b2,point,BigDecimal.ROUND_HALF_UP).toPlainString(); } public static void main(String[] args) { double double_a = 0.05d; double double_b = 0.01d; System.out.println(MathTool.jia(double_a, double_b));//0.06 System.out.println(MathTool.jian(double_a, double_b));//0.04 System.out.println(MathTool.cheng(double_a, double_b));//0.0005 System.out.println(MathTool.chu(double_a, double_b,0));//5 } }
做加减乘数等数学运算时,应尽可能使用BigDecimal类,切忌直接使用int、float、double进行直接运算,否则很有可能会发生精度的丢失,进而导致计算结果的不准确。