zoukankan      html  css  js  c++  java
  • Math类使用记录

    1. Math类中包含的三角函数方法说明

        

        

    返回值类型

    sin(double a)

    返回角的三角正弦

    double

    cos(double a)

    返回角的三角余弦

    double

    tan(double a)

    返回角的三角正切

    double

    asin(double a)

    返回一个值的反正弦

    double

    acos(double a)

    返回一个值的反余弦

    double

    atan(double a)

    返回一个值的反正切

    double

    toRadians(double angdeg)

    将角度转换为弧度

    double

    toDegrees(double angrad)

    将弧度转换为角度

    double

    2.double类型的加减乘除:

    double的计算不精确,会有类似0.0000000000000002的误差,正确的方法是使用BigDecimal或者用整型,整型地方法适合于货币精度已知的情况,比如12.11+1.10转成1211+110计算,最后再/100即可

    /** 
     * 以下是摘抄的BigDecimal方法: 
     */  
    import java.io.Serializable;  
    import java.math.BigDecimal;  
    import org.springframework.stereotype.Component;  
      
    @Component  
    public class DoubleUtil implements Serializable {  
        private static final long serialVersionUID = -3345205828566485102L;  
        // 默认除法运算精度  
        private static final Integer DEF_DIV_SCALE = 2;  
      
        /** 
         * 提供精确的加法运算。 
         */  
        public Double add(Number value1, Number value2) {  
            BigDecimal b1 = new BigDecimal(Double.toString(value1.doubleValue()));  
            BigDecimal b2 = new BigDecimal(Double.toString(value2.doubleValue()));  
            return b1.add(b2).doubleValue();  
        }  
      
        /** 
         * 提供精确的减法运算。 
         */  
        public double sub(Number value1, Number value2) {  
            BigDecimal b1 = new BigDecimal(Double.toString(value1.doubleValue()));  
            BigDecimal b2 = new BigDecimal(Double.toString(value2.doubleValue()));  
            return b1.subtract(b2).doubleValue();  
        }  
      
        /** 
         * 提供精确的乘法运算。 
         */  
        public Double mul(Number value1, Number value2) {  
            BigDecimal b1 = new BigDecimal(Double.toString(value1.doubleValue()));  
            BigDecimal b2 = new BigDecimal(Double.toString(value2.doubleValue()));  
            return b1.multiply(b2).doubleValue();  
        }  
        /** 
         * 提供(相对)精确的除法运算。 当发生除不尽的情况时,由scale参数指定精度,以后的数字四舍五入。 
         */  
        public Double div(Double dividend, Double divisor, Integer scale) {  
            if (scale < 0) {  
                throw new IllegalArgumentException(  
                        "The scale must be a positive integer or zero");  
            }  
            BigDecimal b1 = new BigDecimal(Double.toString(dividend));  
            BigDecimal b2 = new BigDecimal(Double.toString(divisor));  
            return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();  
        }  
      
        /** 
         * 提供精确的小数位四舍五入处理。 
         */  
        public Double round(Double value, Integer scale) {  
            if (scale < 0) {  
                throw new IllegalArgumentException(  
                        "The scale must be a positive integer or zero");  
            }  
            BigDecimal b = new BigDecimal(Double.toString(value));  
            BigDecimal one = new BigDecimal("1");  
            return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue();  
        }  
    }  

    java直接输出一个double类型的数据时,默认是按科学计数法输出,此时如果想与其他数据进行比较的时候,就比较麻烦了。

    因此,如果能手动设置输出的模式,就比较方便了。有两种方式

    //1、格式化输出,代码如下:
    public class TestDouble2String {  
        public static void main(String[] args) {  
            Double double1 = 123456789.111111111111111;  
            DecimalFormat decimalFormat = new DecimalFormat("#,##0.00");// 格式化设置  
            System.out.println("格式输出:" + decimalFormat.format(double1));  
            System.out.println("默认输出:" + double1);  
        }  
    }  
    
    //2、借用BigDecimal类进行输出,代码如下:
    public class TestDouble2String {  
        public static void main(String[] args) {  
            double d = 123456789.2222222222222222;  
            System.out.println("默认输出:" + d);  
            System.out.println("格式输出:" + BigDecimal.valueOf(d));  
        }  
    }  
  • 相关阅读:
    cct,web技术
    cct信息安全
    TFS2010安装与管理
    centos7 opera济览器安装
    Hadoop 的常用组件一览
    Exception in thread "main" java.net.BindException: Address already in use: JVM_Bind
    gcc manual
    5350.support
    meminfo,df,
    WCF
  • 原文地址:https://www.cnblogs.com/zyanrong/p/11027801.html
Copyright © 2011-2022 走看看