• java.math.BigDecimal类multiply的使用


     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();
    }
    }

    参考:http://www.jb51.net/article/43513.htm
    ---------------------
    作者:qq_38375620
    来源:CSDN
    原文:https://blog.csdn.net/qq_38375620/article/details/80074798
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    【转载】NHibernate的hbm.xml的配置文件大全
    C#读取文本播放相应语音【转】
    Convert.ToInt32、int.Parse(Int32.Parse)、int.TryParse三者之间的区别
    to_date()与24小时制表示法及mm分钟的显示
    DataGridView隔行显示不同的颜色
    Oracle锁表了如何处理
    自1月4号起,不再在博客园更新笔记
    Spring 自定义注解+Aspect切面实现日志记录
    Spring @webFilter注解实现过滤器 省略配置xml
    druid配置随手记
  • 原文地址:https://www.cnblogs.com/xiaoshen666/p/11007603.html
Copyright © 2020-2023  润新知