参考:https://www.cnblogs.com/zedosu/p/6518124.html
StrictMath
image.png描述:来源于JDK DOC 描述
确保在所有平台的运算一致性,使用更长的数据类型(或者原始的类型),算出来的结果足够准确,保证数据不会溢出导致精度不准确。同时是使用开源的数学库 "fdlibm"。
The platform uses signed two's complement integer arithmetic with int and long primitive types. The developer should choose the primitive type to ensure that arithmetic operations consistently produce correct results, which in some cases means the operations will not overflow the range of values of the computation
Math
对于精度要求不高的时候,Math优化StrictMath的用法。采用了浮点数float运算,速度很快,但是精度不够,运算过程中会溢出一些值。所以Math中的很多方法是对StrictMath方法的包装。
Math类还提供指数函数以及它的反函数--自然对数 Math.exp Math.log
Math类还提供了两个用于表示π和e常量的近似值 Math.PI Math.E
官方文档地址:docs/api/java/lang/Math.html
以下选取了部分少见的函数做解释
方法 | 描述 |
---|---|
addExact | 加法,当溢出时报异常 |
cbrt | 开立方根 |
sqrt | 平方根 |
ceil | 向上取整,大于等于参数的x的最小正数 |
math.floor | 返回最近的且小于的整数 |
math.rint | 返回最接近的整数,如果刚好居中,则取偶数 |
copySign | 拷贝符号,用y的符号取代X的符号并输出参考 |
exp | E的X幂 |
pow | x的y次幂 |
log | log以e为底 |
log10 | log以10为底 |
decrementExact | math.decrementExact:求int和Long的-1值,超出范围则抛异常 |
negateExact | 求int和long的取反值,超出范围则抛异常 |
round | 跟四舍五入很像,但是不是。小数点后等于5,取整数,正数,整数+1,负数,整数不变,大于5,整数部分+1,正负号不变,小于5,取整数 |
random | 随机返回0-1之间的无符号double值 |
addExact | 求int和long的和值,超过范围则抛异常 |
substractExact | 求int和Long的差值,超出范围则抛异常 |
multiplyExact | 求int和long的乘值,超出范围则抛异常 |
incrementExact | 求int和long的+1值,超出范围则抛异常 |
decrementExact | 求int和Long的-1值,超出范围则抛异常 |
negateExact | 求int和long的取反值,超出范围则抛异常 |
toIntExact | 求Long的int值,超出范围则抛异常 |
abs | 取绝对值 |
max | 取最大值 |
min | 取最小值 |
scalb(x,y) | x乘2的y次方参考 |
modeDiv | 该方法与前面floorDiv()方法类似, 但在模数或余数上应用floor() 操作,而不是商 |
floorDiv | 第一个参数除以第二参数,然后针对结果执行floor操作,返回小于或等于商的整数 |
signum | 符号函数,X>0 返回1.0 ,<0返回-1.0,=0返回0.0 |
网友评论