zoukankan      html  css  js  c++  java
  • Java中BigDecimal类

    由于在运算的时候,float类型和double很容易丢失精度,演示案例,所以,
    为了能精确地表示、计算浮点数,Java提供了BIgDecimal

    BigDecimal类的概述
    不可变的、任意精度的有符号十进制数。
    构造方法
    public BigDecimal(String val)

    看程序写结果:结果和我们想的有点不一样,这是因为float类型的数据储存和整数不一样导致的。他们大部分的时候,都是带有有效数字位。


    演示案例:
    System.out.println(0.09+0.01);//0.099999999999
    System.out.println(1.0-0.32);//0.679999999999
    System.out.println(1.015*100);//101.4999999999
    System.out.println(1.301/100);//0.0130099999999

    System.out.println(1.0-0.12);//0.88
    因为这个减法正好得到了一个整数


    /**BigDecimal的加减乘除法的使用*/
    构造方法:
    public BigDecimal(String val)

    public BigDecimal add(BigDecimal augend):加
    public BigDecimal subtract(BigDecimal subtrahend):减
    public BigDecimal multiply(BigDecimal multiplicand):乘
    public BigDecimal divide(BigDecimal divisor):除
    public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode):商,几位小数,如何舍去

    public class BigDecimalDemo {
    public static void main(String[] args){
    //public BigDecimal add(BigDecimal augend):加
    BigDecimal bd1 = new BigDecimal("0.09");
    BigDecimal bd2 = new BigDecimal("0.01");
    System.out.println("add:"+bd1.add(bd2));//add:0.10
    System.out.println("----------------------");

    //public BigDecimal subtract(BigDecimal subtrahend):减
    BigDecimal bd3 = new BigDecimal("1.0");
    BigDecimal bd4 = new BigDecimal("0.32");
    System.out.println("subtract:"+bd3.subtract(bd4));//subtract:0.68

    //public BigDecimal multiply(BigDecimal multiplicand):乘
    BigDecimal bd5 = new BigDecimal("1.015");
    BigDecimal bd6 = new BigDecimal("100");
    System.out.println("multiply:"+bd5.multiply(bd6));//multiply:101.500

    //public BigDecimal divide(BigDecimal divisor):除
    BigDecimal bd7 = new BigDecimal("1.301");
    BigDecimal bd8 = new BigDecimal("100");
    System.out.println("divide:"+bd7.divide(bd8));//divide:0.01301

    //public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode)
    BigDecimal bd7 = new BigDecimal("1.301");
    BigDecimal bd8 = new BigDecimal("100");
    System.out.println("divide:"+bd7.divide(bd8,8,BigDecimal.ROUND_HALF_UP));//divide:0.01301000

    }
    }

  • 相关阅读:
    [Todo]很不错的Java面试题类型整理,要看
    [Todo] Java并发编程学习
    自建一个Java Spring MVC项目
    [Todo] 乐观悲观锁,自旋互斥锁等等
    [Todo] Redis里面队列的两种模式,以及抢红包在Redis中的实现
    hdu 4704 同余定理+普通快速幂
    [置顶] ubuntu 和 win7 远程登陆 + vnc登陆
    mysql之触发器
    Jsoup API解析HTML中input标签
    IOS UITableView单条刷新,数据不刷新解决方案
  • 原文地址:https://www.cnblogs.com/lszbk/p/12318470.html
Copyright © 2011-2022 走看看