博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BigDemical、BigInteger
阅读量:4630 次
发布时间:2019-06-09

本文共 4582 字,大约阅读时间需要 15 分钟。

BigDecimal 由任意精度的整数非标度值 和32 位的整数标度 (scale) 组成。如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以 10 的负scale 次幂。因此,BigDecimal表示的数值是(unscaledValue × 10-scale)

/*     * 构造方法     */    public static void t1(){        BigDecimal bd1 = new BigDecimal(1);//value:1 scale:0        System.out.println("value:"+bd1+" scale:"+bd1.scale());        BigDecimal bd2 = new BigDecimal(1.23);//value:1.229999999999999982236431605997495353221893310546875 scale:51        System.out.println("value:"+bd2+" scale:"+bd2.scale());        BigDecimal bd3 = new BigDecimal("2.345");//value:2.345 scale:3        System.out.println("value:"+bd3+" scale:"+bd3.scale());    }    /*     * BigDecimal的值=unscaledValue × 10(-scale)      * 非标度值 x10的负scale次方。     * 总结:      * 非标度值为去掉小数点的值。      * scale为小数点后的位数。      */    public static void t2(){        //正整数          //输出值为:23245,scale为:0          //23245*10的负0次方=23245          //非标度值为23245 ,scale为0          BigDecimal bd1 = new BigDecimal("23245");        System.out.println("value:"+bd1+" scale:"+bd1.scale());                 //负整数          //输出值为:-13435,scale为:0          //-13435*10的负0次方=-13435          //非标度值为-13435 ,scale为0          BigDecimal bg2=new BigDecimal("-13435");          System.out.println("输出值为:"+bg2+",scale为:"+bg2.scale());              }        /*     * 舍入模式     */    private static void t3(){        /**          * setScale(int i):实际上舍入模式为ROUND_UNNECESSARY          * 返回一个 BigDecimal,其标度为指定值,其值在数值上等于此 BigDecimal 的值。          * 如果这不可能,则抛出 ArithmeticException。          * 此调用通常用于增加标度,在这种情况下,可以保证存在指定标度和正确值的 BigDecimal。          * 如果调用方知道 BigDecimal在其小数部分的结尾有足够多的零(即其整数值中的十的因子),          * 则该调用也可用于减少标度,以允许重新标度,而不更改其值。          */          BigDecimal bd1 = new BigDecimal("1.24");        BigDecimal bd2 = new BigDecimal("-0.02");        BigDecimal bd3 = new BigDecimal("1.26");                BigDecimal bd5 = bd1.setScale(5);//1.24000        System.out.println(bd5);                         /**          * ROUND_UP:远离零的舍入模式,直接进位          *           */          bd5 = bd1.setScale(1, BigDecimal.ROUND_UP);//1.3        System.out.println(bd5);                 /**          * ROUND_DOWN:接近零的舍入模式,直接舍去          */          bd5 = bd1.setScale(1, BigDecimal.ROUND_DOWN);//1.2        System.out.println(bd5);                /**          * ROUND_CEILING:          * 接近正无穷大的舍入模式。如果 BigDecimal 为正,则舍入行为与 ROUND_UP 相同;          * 如果为负,则舍入行为与 ROUND_DOWN 相同。注意,此舍入模式始终不会减少计算值。           *           */          bd5 = bd1.setScale(1, BigDecimal.ROUND_CEILING);//1.3        System.out.println(bd5);        bd5 = bd2.setScale(1, BigDecimal.ROUND_CEILING);//0.0        System.out.println(bd5);                 /**          * ROUND_HALF_UP          * 4舍5入          */          bd5 = bd1.setScale(1, BigDecimal.ROUND_HALF_UP );//1.2        System.out.println(bd5);        bd5 = bd3.setScale(1, BigDecimal.ROUND_HALF_UP );//1.3        System.out.println(bd5);                //........    }        /*     * 加,减,乘,除     */    public static void t4(){        BigDecimal bd1 = new BigDecimal("12.1");        BigDecimal bd2 = new BigDecimal("3.4");                BigDecimal bd = bd1.add(bd2);//15.5        System.out.println(bd);                bd = bd1.subtract(bd2);//8.7        System.out.println(bd);                //除不尽的时候直接调用divide(BigDecimal divisor, int scale, int roundingMode)        bd = bd1.divide(bd2,2,BigDecimal.ROUND_HALF_UP);//3.56        System.out.println(bd);                bd = bd1.multiply(bd2);//41.14        System.out.println(bd);            }

 BigInteger

public static void t1(){                int a = 1;        BigInteger b1 = BigInteger.valueOf(a);//int                long b = 2233;        BigInteger b2 = BigInteger.valueOf(b);//long                //构造函数        BigInteger b3 = new BigInteger("123432");//String            }        /*     * 加减乘除等运算...     */    public static void t2(){            BigInteger b1 = new BigInteger("2322323424345634522");        BigInteger b2 = new BigInteger("2324534534556");                BigInteger b;                b = b1.add(b2);//加        System.out.println(b);                b = b1.subtract(b2);//减        System.out.println(b);                b = b1.multiply(b2);//乘        System.out.println(b);                b = b1.divide(b2);//除        System.out.println(b);                b = b1.pow(6);//a^b                /*         * gcd();   最大公约数         * abs(); 绝对值         * negate();取反数         * .mod(); a.mod(b)=a%b=a.remainder(b);         * max(); min();         * punlic int comareTo();         * boolean equals(); 是否相等         */            }

转载于:https://www.cnblogs.com/wkcode/p/9085338.html

你可能感兴趣的文章
mongodb的shell命令
查看>>
Windows Phone开发(7):当好总舵主 转:http://blog.csdn.net/tcjiaan/article/details/7281421...
查看>>
Android UI体验之全屏沉浸式透明状态栏效果
查看>>
STM32普通定时器(TIM2-7)的时钟源
查看>>
单相计量芯片RN8209D使用经验分享(转)
查看>>
SD卡的控制方法(指令集和控制时序)
查看>>
zabbix4.0构建实录
查看>>
javascript保留字
查看>>
assert
查看>>
openstack安装在虚拟机上重启之后无法启动问题
查看>>
Bulk_Collect_Performance 比较
查看>>
类于对象
查看>>
灵活性是原则性基础上的灵活
查看>>
python 添加进度条
查看>>
恢复Opera11.50地址栏的下拉列表按钮
查看>>
EBS上用过的一些接口表整理信息
查看>>
ldconfig
查看>>
操作系统简介
查看>>
查看Linux系统中某目录的大小
查看>>
Git远程仓库地址变更
查看>>