关于BigDecimal的一些常用基本操作记录

 1        BigDecimal b1 = new BigDecimal("1.124");
2        BigDecimal b2 = new BigDecimal("1.125");
3        BigDecimal b3 = new BigDecimal("1.126");
4        BigDecimal b4 = new BigDecimal("-1.126");
5        BigDecimal b5 = new BigDecimal("-1.123");
6        //加法
7        b1.add(b2);
8        //减法
9        b1.subtract(b2);
10        //乘法
11        b1.multiply(b2);
12        //除法(关于其小数保留下面统一解释)
13        b1.divide(b3, 2, BigDecimal.ROUND_UP);
14        //比较大小 (通过返回值区分 =0 相等, =1 前者大, =-1 后者大 )
15        b1.compareTo(b2);
16
17        //保留小数位与解释
18
19        /**
20         * 始终对非零舍弃部分前面的数字加1
21         *
22         * b1 1.124, b2 1.125, b3 1.126, b4 -1.126, b5 -1.123
23         */
24        System.out.println(b1.setScale(2, BigDecimal.ROUND_UP));  //1.13
25        System.out.println(b2.setScale(2, BigDecimal.ROUND_UP));  //1.13
26        System.out.println(b3.setScale(2, BigDecimal.ROUND_UP));  //1.13
27        System.out.println(b4.setScale(2, BigDecimal.ROUND_UP));  //-1.13
28        System.out.println(b5.setScale(2, BigDecimal.ROUND_UP));  //-1.13
29        /**
30         * 从不对舍弃部分前面的数字加1
31         *
32         * b1 1.124, b2 1.125, b3 1.126, b4 -1.126, b5 -1.123
33         */
34        System.out.println(b1.setScale(2, BigDecimal.ROUND_DOWN));  //1.12
35        System.out.println(b2.setScale(2, BigDecimal.ROUND_DOWN));  //1.12
36        System.out.println(b3.setScale(2, BigDecimal.ROUND_DOWN));  //1.12
37        System.out.println(b4.setScale(2, BigDecimal.ROUND_DOWN));  //-1.12
38        System.out.println(b5.setScale(2, BigDecimal.ROUND_DOWN));  //-1.12
39        /**
40         * 如果 BigDecimal 为正,则舍入行为与 ROUND_UP 相同
41         * 如果为负,则舍入行为与 ROUND_DOWN 相同
42         *
43         * b1 1.124, b2 1.125, b3 1.126, b4 -1.126, b5 -1.123
44         */
45        System.out.println(b1.setScale(2, BigDecimal.ROUND_CEILING)); //1.13
46        System.out.println(b2.setScale(2, BigDecimal.ROUND_CEILING)); //1.13
47        System.out.println(b3.setScale(2, BigDecimal.ROUND_CEILING)); //1.13
48        System.out.println(b4.setScale(2, BigDecimal.ROUND_CEILING)); //-1.12
49        System.out.println(b5.setScale(2, BigDecimal.ROUND_CEILING)); //-1.12
50        /**
51         * 如果 BigDecimal 为正,则舍入行为与 ROUND_DOWN 相同
52         * 如果为负,则舍入行为与 ROUND_UP 相同
53         *
54         * b1 1.124, b2 1.125, b3 1.126, b4 -1.126, b5 -1.123
55         */
56        System.out.println(b1.setScale(2, BigDecimal.ROUND_FLOOR));  //1.12
57        System.out.println(b2.setScale(2, BigDecimal.ROUND_FLOOR));  //1.12
58        System.out.println(b3.setScale(2, BigDecimal.ROUND_FLOOR));  //1.12
59        System.out.println(b4.setScale(2, BigDecimal.ROUND_FLOOR));  //-1.13
60        System.out.println(b5.setScale(2, BigDecimal.ROUND_FLOOR));  //-1.13
61        /**
62         * 如果舍弃部分 >= 0.5,则舍入行为与 ROUND_UP 相同;否则舍入行为与 ROUND_DOWN 相同
63         *
64         * b1 1.124, b2 1.125, b3 1.126, b4 -1.126, b5 -1.123
65         */
66        System.out.println(b1.setScale(2, BigDecimal.ROUND_HALF_UP));  //1.12
67        System.out.println(b2.setScale(2, BigDecimal.ROUND_HALF_UP));  //1.13
68        System.out.println(b3.setScale(2, BigDecimal.ROUND_HALF_UP));  //1.13
69        System.out.println(b4.setScale(2, BigDecimal.ROUND_HALF_UP));  //-1.13
70        System.out.println(b5.setScale(2, BigDecimal.ROUND_HALF_UP));  //-1.12
71        /**
72         * 如果舍弃部分 > 0.5,则舍入行为与 ROUND_UP 相同;否则舍入行为与 ROUND_DOWN 相同(五舍六入)。
73         *
74         * b1 1.124, b2 1.125, b3 1.126, b4 -1.126, b5 -1.123
75         */
76        System.out.println(b1.setScale(2, BigDecimal.ROUND_HALF_DOWN));  //1.12
77        System.out.println(b2.setScale(2, BigDecimal.ROUND_HALF_DOWN));  //1.12
78        System.out.println(b3.setScale(2, BigDecimal.ROUND_HALF_DOWN));  //1.13
79        System.out.println(b4.setScale(2, BigDecimal.ROUND_HALF_DOWN));  //-1.13
80        System.out.println(b5.setScale(2, BigDecimal.ROUND_HALF_DOWN));  //-1.12

BigDecimal的加减乘除,比较,小数保留的更多相关文章

  1. 价格BigDecimal的加减乘除、小数四舍五入、比较

    num2必须改用传入String类型 //加法 BigDecimal result1 = num1.add(num2); //减法 BigDecimal result2 = num1.subtract ...

  2. BigDecimal的用法详解(保留两位小数,四舍五入,数字格式化,科学计数法转数字,数字里的逗号处理)

    转自:https://blog.csdn.net/ochangwen/article/details/51531866 一.简介 Java在java.math包中提供的API类BigDecimal,用 ...

  3. python之设置小数保留位数

    python之设置小数保留位数 test.py: a = [3,4,4,4,6,4] average1 = float(sum(a)/len(a)) average2 =round(average1, ...

  4. input输入框只能输入正数和小数(保留小数点后两位)

    1.限制只能输入正数和小数保留小数点后两位 1 <input type="number" id="txtNum" /> 2 3 <script ...

  5. 【Java】使用BigDecimal类进行精确小数计算

    在商业计算中(尤其是计算价格)需要使用BigDecimal类来进行精确小数计算,因为用其他类型计算(如double)得到的结果不是精确的! 写个测试类. import org.junit.Test; ...

  6. BigDecimal处理加减乘除

    public static void main(String[] args) { BigDecimal totalDoneAmt = new BigDecimal(2); Double d1 = ad ...

  7. Java中小数保留问题

    方式一: 四舍五入   double   f   =   111231.5585;   BigDecimal   b   =   new   BigDecimal(f);   double   f1  ...

  8. java小数保留位数四舍五入

    方法一:四舍五入 double f = 111231.5585; BigDecimal b = new BigDecimal(f); double f1 = b.setScale(2, Roundin ...

  9. BigDecimal进行加减乘除计算

    以前大部分关于查询计算的逻辑是在sql语句中执行的,但是有时候会出现比较复杂的计算情况,需要我们在代码中进行计算,这个时候使用BigDecimal进行计算会很方便. BigDecimal num1 = ...

随机推荐

  1. H3C 基本ACL部署位置示例

  2. navicat ssh通道受限问题处理

    navicat 链接数据库 使用navicat 的ssh通道连接数据库回遇到权限问题 错误代码如下: 80070007: SSH Tunnel: Server does not support dif ...

  3. MySQL中Index Merge简介

    索引合并优化 官网翻译 MySQL5.7文档 索引合并是为了减少几个范围(type中的range类型:range can be used when a key column is compared t ...

  4. P1056 骑士游历

    题目描述 给出一个8*8的空棋盘,其中行由a-h编号,列由1-8编号. 再给出起点和终点,问,骑士至少需要几步可以从起点移到终点.骑士是走日的.类似于中国象棋的马. 输入格式 输入两个字符串,每个字符 ...

  5. TESTNG+JENKINS持续集成

    一.环境搭建 安装testNG插件到eclipse. -) 选择菜单 Help /Software updates / Find and Install. -) 点击add button然后在loca ...

  6. JVM调优-Jstack线程分析

    jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项"-J-d64",Windows的jstack使 ...

  7. linux llseek 实现

    llseek 方法实现了 lseek 和 llseek 系统调用. 我们已经说了如果 llseek 方法从设备 的操作中缺失, 内核中的缺省的实现进行移位通过修改 filp->f_pos, 这是 ...

  8. CSS3 彩色渐变动效按钮

    <!DOCTYPE html> <html> <head> <title>Crayon Animate</title> <style ...

  9. 谈谈IC、ASIC、SoC、MPU、MCU、CPU、GPU、DSP、FPGA、CPLD

    IC (integrated circuit) 集成电路:微电路.微芯片.芯片:集成电路又分成:模拟集成电路(线性电路).数字集成电路.数/模混合集成电路: 模拟集成电路:产生.放大.处理各种模拟信号 ...

  10. 学习python资料

    资料链接:https://www.cnblogs.com/wupeiqi/articles/5433893.html