深挖JDK(一):math

作者: 舞动的痞老板 | 来源:发表于2019-03-22 15:38 被阅读7次

    参考: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

    参考
    菜鸟

    相关文章

      网友评论

        本文标题:深挖JDK(一):math

        本文链接:https://www.haomeiwen.com/subject/wfofvqtx.html