资源预览内容
亲,该文档总共2页全部预览完了,如果喜欢就下载吧!
资源描述
java中利用BigDecim进行精确计算在项目中有时会使用到比较精确的计算,比如涉及到钱的计算,这个时候不会采用I或者d类型来进行。需要使用igdeci養型来进行大数的精确运算。、BigDecim的基本运算口减乘除绝对值BigDecima初始化时尽量全部使用的构造函数,不然的话可能有出现错误BigDecimalmeBigDecimaI()BigDecimalmeBigDecimaI()我们对其进行加、减、乘、除、绝对值的运算其实质就是对Bigdecima的类的一些方法调用:加法add函数、减法函数、乘法mIi函数、除法divide(函数、绝对值a函数。/加/法BigDecimal/减/法resuI、1=num1.add(num2);BigDecimaI/乘/法resuI、2=num1rac、(num2);BigDecimaI/除/法resuI、3=num1.muI、ipIy(num2);BigDecimaI/绝/对值resuI、5=num2.divide(um1,2,BigDecimaI.ROUND_HALF_UP)BigDecimaIresuI、4=num3.abs();需要注意的是:(1em中的数字i默认是d()类型的,d类型小数计算不精准。(2使用BigDecima类构造方法传入d类型时,计算的结果也是不精确的。因为不是所有的浮点数都能够被精确的表示成一个d类型值,因此它会被表示成与它最接近的d类型的值。所以在需要精确计算时必须改用传入的构造方法,这样才能得到更加精确的计算结果。二、除法divide参数使用使用除法函数在divide的时候要设置各种参数,要精确的小数位数和舍入模式,不然会出现报错。我忙可以看到divi北函堀嘖的咖下publicEigDeciiialdivideEigDeciiLaLdivisor,intscale,intromdinNDce.)苯为(SigDecinaldivisor除凱iiscale措晞卜数儘,introjidLngMode舍人對J可以看到舍入模式有很多种EigDirndLRCXD_XXXX_XXX,具体都是十么意思呢EiDecixalresu._t5L=EiDecixalresu._t52=EiDecixalresu._t53=EiDecixalresu._t54=EiDecixalresu._ti55=EiDecixalresu._t56=EiDecixalresu._ti57=EiDeciial*?su._t5:-=n.in22.2.1vide:numl2,n.in22.:.ivide:numl2,n.in22.:.ivide:numl2,n.in22.:.ivide:numl2,n.in22.divide:numl2,n.in22.divide:numl2,n.in22.divide:numl2,n.in22.divide:numl2,i:Ele:SisDeciinal.LWD.DOrK;3,3isDeciinal.就俪工弐肚粘);heIe:2,3igDeciinal.j?OLWD_FOOj?)i:Ele:3,Bi-Decimal.OLfND.HiLF.UP);i:Ele:3,3igDeciiDal.i?OLWD_H4F_DOf?C;i:Ele:S,3i-Decimal.OLfND.HiLF.E:计算1胃的结果(最后一和ROUND_UNNFCB5AR惬吉果为无限小颤的情况下会报错)除法RCUNDJJP:0.334除法RCUND_DO期:0.333除法RCUNDJZEILIHG:D.334除法RCUND_FLCOu.333馀:法RCUNDHALFUP:D.333对这八种舍入模式解释如下1、ROUND_UP:舍入远离零的舍入模式,在丢弃非零部分之前始终增加数字(始终对非零舍弃部分前面的数字加1),注意,此舍入模式始终不会减少计算值的大小。2、ROUND_DOWN:接近零的舍入模式。在丢弃某部分之前始终不增加数字(从不对舍弃部分前面的数字加1,即截短)。注意,此舍入模式始终不会增加计算值的大小。3、ROUND_CEILING:接近正无穷大的舍入模式。如果BigDecimal为正,则舍入行为与ROUND_UP相同;如果为负,则舍入行为与ROUND_DOWN相同。注意,此舍入模式始终不会减少计算值。4、ROUND_FLOOR:接近负无穷大的舍入模式。如果BigDecimal为正,则舍入行为与ROUND_DOWN相同;如果为负,则舍入行为与ROUND_UP相同。注意,此舍入模式始终不会增加计算值。5、ROUND_HALF_UP:向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为向上舍入的舍入模式。如果舍弃部分=0.5,则舍入行为与ROUND_UP相同;否则舍入行为与ROUND_DOWN相同。注意,这是我们大多数人在小学时就学过的舍入模式:四舍五入)。6、ROUND_HALF_DOWN:向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为上舍入的舍入模式。如果舍弃部分0.5,贝U舍入行为与ROUND_UP相同;否则舍入行为与ROUND_DOWN相同(五舍六入)。7、ROUND_HALF_EVEN:向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。如果舍弃部分左边的数字为奇数,则舍入行为与ROUND_HALF_UP相同;如果为偶数,则舍入行为与ROUND_HALF_DOWN相同。注意,在重复进行一系列计算时,此舍入模式可以将累加错误减到最小。此舍入模式也称为“银行家舍入法”,主要在美国使用。四舍六入,五分两种情况。如果前一位为奇数,则入位,否则舍去。以下例子为保留小数点1位,那么这种舍入方式下的结果。1.151.21.251.2&ROUND_UNNECESSARY:断言请求的操作具有精确的结果,因此不需要舍入。如果对获得精确结果的操作指定此舍入模式,则抛出ArithmeticException。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号