最终类 提供了基本的数学运算,提供了大量的静态方法,如果想要更加有难度的,查看math包
strictfp:运算提升到80位。
BigDecimal可以用作小数的之间的精确运算,但是参数要是字符串
public strictfp static void main(String[] args) { // TODO Auto-generated method stub //天花板函数向上取整 System.out.println(Math.ceil(2.18));//3 //地板函数 System.out.println(Math.floor(2.68));//2 //四舍五入 System.out.println(Math.round(4.56));//5 //伪随机小数,大于等于0.0小于1.0 System.out.println(Math.random()); //大部分小数的二进制的补码是无线位数,但是存储的位数是有限的所以不能精确运算 double i=2.10-1.98; System.out.println(i);//0.1200000000000001 //精确点的运算 BigDecimal b1=new BigDecimal(2.1); BigDecimal b2=new BigDecimal(1.98); System.out.println(b1.subtract(b2));//0.120000000000000106581410364015027880668640136718750 //精确运算,参数是字符串,相当于相应位上相减 ,抛弃了补码运算因为补码肯定无法算的精确的 BigDecimal b3=new BigDecimal("2.1"); BigDecimal b4=new BigDecimal("1.98"); System.out.println(b3.subtract(b4)); }
2.超大数
BigInteger bi1=new BigInteger("64545645645645656644611561"); BigInteger bi2=new BigInteger("465156184861516684515845135146848648646"); //相乘 System.out.println(bi1.multiply(bi2));
3.保留小数位
//DecaimalFormat---进行格式化 //用float会有点小问题 double x=0.26559; //0是占位符,如果这个位上有值就把值展示出来,没值就展示0 DecimalFormat df=new DecimalFormat("0.0000000");//0.2655900 System.out.println(df.format(x)); //#号是另一个占位符如果这个位上有值就把值展示出来,没值就不展示 DecimalFormat da=new DecimalFormat("#.########"); System.out.println(da.format(x));