当前位置:首页 > Java技术 > BigDecimal 详细解析

BigDecimal 详细解析

2022年08月06日 09:36:25Java技术4

  参加工作之后发现公司项目的数据库有关数值的字段类型,很少是之前常用的float和double,

而是一个没有接触过的decimal,在Java中表示的类型为BigDecimal,

而在业务中常常有关BigDecimal的加减乘除运算,所以查了一下资料,做了如下总结。

 

1.前言

  Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。

  双精度浮点型变量double可以处理16位有效数。

  float和double主要用来处理科学计算和工程计算,

  在实际应用中,特别是商业计算往往要求结果更加精确。运用BigDecimal可以很方便的解决这个问题。

2.构造方法

  BigDecimal  a = new BigDecimal();

  BigDecimal一共有4个构造方法

  BigDecimal(int) 创建一个具有参数所指定整数值的对象。

  BigDecimal(double) 创建一个具有参数所指定双精度值的对象。

  BigDecimal(long) 创建一个具有参数所指定长整数值的对象。

  BigDecimal(String) 创建一个具有参数所指定以字符串表示的数值的对象。

  特别注意:

    double a = 0.1;

    所创建的new BigDecimal(a);并不正好等一0.1,而是                                 0.1000000000000000055511151231257827021181583404541015625

    这是因为doule不能表示为任何有限长度的二进制小数。

    String b = "0.1";

    所创建的new BigDecimal(b),正好等于0.1.            

3.运算方式

  因为BigDecimal是一个对象,不同于double,float等基本类型可以通过运算符+,—,*,/等做运算,

  其有自己的运算方法:

  BigDecimal add(BigDecimal augend) 加法运算

  BigDecimal subtract(BigDecimal subtrahend) 减法运算

  BigDecimal multiply(BigDecimal multiplicand) 乘法运算

  BigDecimal divide(BigDecimal divisor) 除法运算

  举例:

    BigDeciaml a = new BigDeciaml("1");

    BigDeciaml b = new BigDeciaml("2");

    a.add(b);

    system.out.println("a="+a);

    大家很容易认为会输出a=3,其实是a=1;

    其实BigDecimal的加减乘除方法都是返回一个新的BigDeciaml对象,

    所以:

    BigDecimal c = a.add(b);

    system.out.println("c="+c);//c=3

 

     

 以上

 

 

 

 

 

 

 

作者:听_风
来源链接:https://www.cnblogs.com/fengchaoLove/p/5846333.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/java/18188.html

标签: BigDecimal
分享给朋友:

“BigDecimal 详细解析” 的相关文章

java.math.BigDecimal常用方法

+构造函数 BigDecimal(BigInteger val) 将BigInteger转化为BigDecimal。 BigDecimal(BigInteger unscaledVal, int scale) 将B...

Java:利用BigDecimal类巧妙处理Double类型精度丢失

Java:利用BigDecimal类巧妙处理Double类型精度丢失

文章目录 本篇要点 经典问题:浮点数精度丢失 十进制整数如何转化为二进制整数? 十进制小数如何转化为二进制数?...

BigDecimal转为int类型

BigDecimal转为int类型

直接调用BigDecimal的intValue()方法 示例: BigDecimal a = new BigDecimal(“1.1”); int b = a.intValue(); BigDecimal运算方法:...

JDK中BigDecimal的代码实现

package java.math; import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.PrintStream;...

BigDecimal 使用compareTo比较大小

1.BigDecimal的比较模式  BigDecimal b1 = new BigDecimal(0.1); BigDecimal b2 = new BigDecimal(0.2); int c = b1.compareTo(b2); // -1 c=1表示...

BigDecimal去除小数位

String cellValue = ""; double numericCellValue = cell.getNumericCellValue(); BigDecimal bd2...

java定义Bigdecimal类型

Java常用类型定义、转换及比较主要有以下三个方面: (一)Integer类型 1).定义 Integer a=new Integer(int value); Integer a=new Integer(String value); 2).转换 i.定义中就可以将int...

BigInteger、BigDecimal、数字格式化

BigInteger与BigDecimal的目的是用来精确地表示大整数和小数,常用于商业计算中。 BigInteger:支持任意精度的整数,可以精确地表示任意大小的整数值,同时在运算过程中不会丢失任何信息。 BigDecimal:可以精确地表示任意精度的小数,同时在运算过程...

BigDecimal的运算 计算 加减乘除

BigDecimal的运算 计算 加减乘除 加法: add()函数  减法: subtract()函数  乘法: multiply()函数  除法: divide()函数  绝对值: abs()函数 初始化数值: // 第...

关于BigDecimal

1.int 转化成BigDecimal 类型      int num=88.4;      BigDecimal test = new BigDecimal(num); 2. BigDeci...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。