当前位置 博文首页 > 文章内容

    java.math的相关介绍. BigDecimal类multiply如何应用

    作者:dlxiaoyu01 栏目:前端代码 时间:2021-01-12 16:02:36

        java.math.BigInteger.multiply(BigInteger val) 返回一个BigInteger,其值是 (this * val).
        声明
        以下是java.math.BigInteger.multiply()方法的声明
        public BigInteger multiply(BigInteger val)
        参数
        val - 通过此BigInteger乘以的值
        返回值
        该方法返回一个BigInteger对象的值是 this * val.
        异常
        NA
        例子
        下面的例子显示math.BigInteger.multiply()方法的用法
        package com.yiibai;
        import java.math.*;
        public class BigIntegerDemo {
        public static void main(String[] args) {
        // create 3 BigInteger objects
        BigInteger bi1, bi2, bi3;
        bi1 = new BigInteger("7");
        bi2 = new BigInteger("20");
        // multiply bi1 with bi2 and assign result to bi3
        bi3 = bi1.multiply(bi2);
        String str = bi1 + " * " + bi2 + " = " +bi3;
        // print bi3 value
        System.out.println("Multiplication result is " +str);
        }
        }
        让我们编译和运行上面的程序,这将产生以下结果:
        Multiplication result is 7 * 20 = 140
        其实java的float只能用来进行科学计算或工程计算,在大多数的商业计算中,一般采用java.math.BigDecimal类来进行精确计算。
        在使用BigDecimal类来进行计算的时候,主要分为以下步骤:
        1、用float或者double变量构建BigDecimal对象。
        2、通过调用BigDecimal的加,减,乘,除等相应的方法进行算术运算。
        3、把BigDecimal对象转换成float,double,int等类型。
        一般来说,可以使用BigDecimal的构造方法或者静态方法的valueOf()方法把基本类型的变量构建成BigDecimal对象。
        代码如下:
        BigDecimal b1 = new BigDecimal(Double.toString(0.48));
        BigDecimal b2 = BigDecimal.valueOf(0.48);
        对于常用的加,减,乘,除,BigDecimal类提供了相应的成员方法。
        代码如下:
        public BigDecimal add(BigDecimal value);//加法
        public BigDecimal subtract(BigDecimal value); //减法
        public BigDecimal multiply(BigDecimal value); //乘法
        public BigDecimal divide(BigDecimal value); //除法
        进行相应的计算后,我们可能需要将BigDecimal对象转换成相应的基本数据类型的变量,可以使用floatValue(),doubleValue()等方法。
        下面是一个工具类,该工具类提供加,减,乘,除运算。
        代码如下:
        public class Arith {
        /**
        * 提供精确加法计算的add方法
        * @param value1 被加数
        * @param value2 加数
        * @return 两个参数的和
        */
        public static double add(double value1,double value2){
        BigDecimal b1 = new BigDecimal(Double.valueOf(value1));
        BigDecimal b2 = new BigDecimal(Double.valueOf(value2));
        return b1.add(b2).doubleValue();
        }
        /**
        * 提供精确减法运算的sub方法
        * @param value1 被减数
        * @param value2 减数
        * @return 两个参数的差
        */
        public static double sub(double value1,double value2){
        BigDecimal b1 = new BigDecimal(Double.valueOf(value1));
        BigDecimal b2 = new BigDecimal(Double.valueOf(value2));
        return b1.subtract(b2).doubleValue();
        }
        /**
        * 提供精确乘法运算的mul方法
        * @param value1 被乘数
        * @param value2 乘数
        * @return 两个参数的积
        */
        public static double mul(double value1,double value2){
        BigDecimal b1 = new BigDecimal(Double.valueOf(value1));
        BigDecimal b2 = new BigDecimal(Double.valueOf(value2));
        return b1.multiply(b2).doubleValue();
        }
        /**
        * 提供精确的除法运算方法div
        * @param value1 被除数
        * @param value2 除数
        * @param scale 精确范围
        * @return 两个参数的商
        * @throws IllegalAccessException
        */
        public static double div(double value1,double value2,int scale) throws IllegalAccessException{
        //如果精确范围小于0,抛出异常信息
        if(scale<0){
        throw new IllegalAccessException("精确度不能小于0");
        }
        BigDecimal b1 = new BigDecimal(Double.valueOf(value1));
        BigDecimal b2 = new BigDecimal(Double.valueOf(value2));
        return b1.divide(b2, scale).doubleValue();
        }
        }