Java工具库Guava的数学运算常用方法示例代码
创始人
2024-02-10 13:07:14
0

场景

Java核心工具库Guava介绍以及Optional和Preconditions使用进行非空和数据校验:

Java核心工具库Guava介绍以及Optional和Preconditions使用进行非空和数据校验_霸道流氓气质的博客-CSDN博客_guava 校验

为什么使用 Guava Math

1、Guava Math 针对各种不常见的溢出情况都有充分的测试;对溢出语义,Guava 文档也有相应的说明;

如果运算的溢出检查不能通过,将导致快速失败;

2、Guava Math 的性能经过了精心的设计和调优;虽然性能不可避免地依据具体硬件细节而有所差异

,但 Guava Math 的速度通常可以与 Apache Commons 的 MathUtils 相比,在某些场景下甚至还有显著提升;

3、Guava Math 在设计上考虑了可读性和正确的编程习惯;IntMath.log2(x, CEILING) 所表达的含义,

即使在快速阅读时也是清晰明确的。而 32-Integer.numberOfLeadingZeros(x – 1)对于阅读者来说则不够清晰。

注:

博客:
霸道流氓气质的博客_CSDN博客-C#,架构之路,SpringBoot领域博主
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

有溢出检查的运算

Guava Math 提供了若干有溢出检查的运算方法:结果溢出时,这些方法将快速失败而不是忽略溢出。

        System.out.println(IntMath.checkedAdd(1000,2500));//3500System.out.println(IntMath.checkedSubtract(10000,2500));//7500System.out.println(IntMath.checkedMultiply(1000,250));//250000//checkedPow(int b, int k) 计算b的k次方System.out.println(IntMath.checkedPow(2,5));//32//System.out.println(IntMath.checkedPow(Integer.MAX_VALUE,Integer.MAX_VALUE));//java.lang.ArithmeticException: overflow: checkedPow

 

实数运算

IntMath、LongMath 和 BigIntegerMath 提供了很多实数运算的方法,并把最终运算结果舍入成整数。

这些方法接受一个java.math.RoundingMode枚举值作为舍入的模式

        •DOWN:向零方向舍入(去尾法)
        •UP:远离零方向舍入
        •FLOOR:向负无限大方向舍入
        •CEILING:向正无限大方向舍入
        •UNNECESSARY:不需要舍入,如果用此模式进行舍入,应直接抛出 ArithmeticException
        •HALF_UP:向最近的整数舍入,其中 x.5 远离零方向舍入
        •HALF_DOWN:向最近的整数舍入,其中 x.5 向零方向舍入
        •HALF_EVEN:向最近的整数舍入,其中 x.5 向相邻的偶数舍入

        //divide除法System.out.println(IntMath.divide(19,4,RoundingMode.FLOOR));//4//sqrt 平方根System.out.println(IntMath.sqrt(4,RoundingMode.CEILING));//2System.out.println(IntMath.sqrt(5,RoundingMode.CEILING));//3//log2 以2为底的对数System.out.println(IntMath.log2(6,RoundingMode.FLOOR));//2//log10 以10为底的对数System.out.println(IntMath.log10(10,RoundingMode.FLOOR));//1

Guava 还另外提供了一些有用的运算函数

        //gcd 最大公约数System.out.println(IntMath.gcd(6,9));//3//mod 取模System.out.println(IntMath.mod(10,2));//0//pow 取幂System.out.println(IntMath.pow(2,6));//64//isPowerOfTwo是否2的幂System.out.println(IntMath.isPowerOfTwo(4));//trueSystem.out.println(IntMath.isPowerOfTwo(5));//false//factorial 阶乘System.out.println(IntMath.factorial(3));//6//binomial 二项式系数System.out.println(IntMath.binomial(4,2));//6

 

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...