Java工具库Guava的数学运算常用方法示例代码

生活中,最使人疲惫的往往不是道路的遥远,而是心中的郁闷;最使人痛苦的往往不是生活的不幸,而是希望的破灭;最使人颓废的往往不是前途的坎坷,而是自信的丧失;最使人绝望的往往不是挫折的打击,而是心灵的死亡。所以我们要有自己的梦想,让梦想的星光指引着我们走出落漠,走出惆怅,带着我们走进自己的理想。

导读:本篇文章讲解 Java工具库Guava的数学运算常用方法示例代码,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

场景

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));//3500
        System.out.println(IntMath.checkedSubtract(10000,2500));//7500
        System.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

Java工具库Guava的数学运算常用方法示例代码 

实数运算

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));//2
        System.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));//true
        System.out.println(IntMath.isPowerOfTwo(5));//false
        //factorial 阶乘
        System.out.println(IntMath.factorial(3));//6
        //binomial 二项式系数
        System.out.println(IntMath.binomial(4,2));//6

Java工具库Guava的数学运算常用方法示例代码

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/135858.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!