BigDecimal详解
来源:互联网 发布:绵阳九院 知乎 编辑:程序博客网 时间:2024/06/07 06:18
在java 里面,int 的最大值是:2147483647,现在如果想用比这个数大怎么办?换句话说,就是数值较大,这时候就用到了BigDecimal BigInteger 也可以存放比较大的数, 和 BigDecimal 的区别是 :BigInteger 存放的是大的整数,而BigDecimal 存放大的小数。BigDecamal的加减乘除
- BigDecimal bignum1 = new BigDecimal("10");
- BigDecimal bignum2 = new BigDecimal("5");
- BigDecimal bignum3 = null;
- //加法
- bignum3 = bignum1.add(bignum2);
- System.out.println("和 是:" + bignum3);
- //减法
- bignum3 = bignum1.subtract(bignum2);
- System.out.println("差 是:" + bignum3);
- //乘法
- bignum3 = bignum1.multiply(bignum2);
- System.out.println("积 是:" + bignum3);
- //除法
- bignum3 = bignum1.divide(bignum2);
- System.out.println("商 是:" + bignum3);
运行结果为:
BigDecimal的比较大小
- BigDecimal num1 = new BigDecimal("0");
- BigDecimal num2 = new BigDecimal("1");
- BigDecimal num3 = new BigDecimal("2");
- BigDecimal num = new BigDecimal("1"); //用做比较的值
- System.out.println(num1.compareTo(num)); //小于 时,返回 -1
- System.out.println(num2.compareTo(num)); //等于 时,返回 0
- System.out.println(num3.compareTo(num)); //大于 时,返回 1
- 这是输出结果:
BigDecimal写for循环
- for (BigDecimal i = new BigDecimal("0"); i.compareTo(new BigDecimal("10")) != 1; i = i.add(new BigDecimal("1"))) {
- System.out.print(i + "\t");
控制台打印的是从0 到 10 。
- }
使用示例(商=被除数.devide(除数,保留小数位数,精确方法) )
应用场景:一批中供客户的单价是1000元/年,如果按月计算的话1000/12=83.3333333333.... 解决之道:就是给divide设置精确的小数点divide(xxxxx,2, BigDecimal.ROUND_HALF_EVEN) 在 java中, 四舍五入通过 BigDecimal 来实现。一定要注意:BigDecimal is Immutable。也就是跟String一样,对前一个的修改,比如setScale(), add()等都会返回一个新的BigDecimal.下面贴上一张图:
- roundMode是指舍位时候的模式,传参数的时候用BigDecimal.ROUND_XXXX_XXX
- ROUND_CEILING: 舍位时往正无穷方向移动 1.1-> 2 1.5-> 2 1.8-> 2 -1.1-> -1 -1.5-> -1 -1.8-> -1
- ROUND_DOWN:向0的方向移动 1.1-> 1 1.5-> 1 1.8-> 1 -1.1-> -1 -1.5-> -1 -1.8> -1
- ROUND_FLOOR:与CEILING相反,往负无穷 1.1-> 1 1.5-> 1 1.8-> 1 -1.1-> -2 -1.5-> -2 -1.8-> -2
- ROUND_HALF_DOWN:以5为分界线,或曰五舍六入 1.5-> 1 1.6-> 1 -1.5-> -1 -1.6-> -2
- ROUND_HALF_EVEN:同样以5为分界线,如果是5,则前一位变偶数1.15-> 1.2 1.16-> 1.2 1.25-> 1.2 1.26-> 1.3
- ROUND_HALF_UP:最常见的四舍五入
- ROUND_UNNECESSARY:无需舍位
- ROUND_UP:与ROUND_DOWN,远离0的方向 1.1-> 2 1.5-> 2 1.8-> 2 -1.1-> -2 -1.5-> -2 -1.8-> -2
0 0
- BigDecimal详解
- BigDecimal详解
- BigDecimal详解
- Java BigDecimal详解
- BigDecimal和BigInteger详解
- BigDecimal用法详解
- BigDecimal 使用方法详解
- Java BigDecimal 详解
- BigDecimal用法详解
- BigDecimal用法详解
- ava BigDecimal详解
- BigDecimal用法详解
- BigDecimal用法详解
- BigDecimal用法详解
- BigDecimal用法详解
- BigDecimal 使用方法详解
- Java BigDecimal详解
- BigDecimal用法详解
- all I want is nothing more...
- 中缀表达式X=A+B*(C-(D+F))/E转后缀表达式之后是什么?
- 哪些工具可以用来进行Bug管理
- [AHK]为通达信软件定义快捷键(发送按键法)
- RAM check failed @ address 0x10000000.
- BigDecimal详解
- ZigZag Conversion
- 面向对象的七大原则
- linux下将无线网卡工作模式切换为监听模式
- iOS UI自动化测试与代码覆盖率
- 小波变换的特点和作用
- Windows下C++多线程同步
- 机器学习第一周笔记
- qt Creator使用CDB调试启动很慢