关键词:
BigDecimal
java.math.BigDecimal
为了解决java中浮点数运算不精确, 用这个类可以很好的解决
常用构造器
建议使用String类型构造方法, 否则使用double类型进行初始化可能还是不精确, 因为double本身就不够精确
构造器 | 说明 |
---|---|
BigDecimal(String val) | val必须是数字字符串才可以 |
BigDecimal(double val) | 可以传入double类型的数字进行精确运算 |
常用方法
返回值 | 方法 | 说明 |
---|---|---|
BigDecimal | add(BigDecimal bd) | 加法 |
BigDecimal | divide(BigDecimal bd) | 除法 如果出现除不尽的情况, 会抛出异常 |
BigDecimal | divide(BigDecimal bd, int scal, RoundingMode roundingMode) | 除法 bd表示进行运算的对象, scal保留几位小数, roundingMode是解决方案(例如四舍五入) 例如: bd3 = bd1.divide(bd2, 3, BigDecimal.ROUND_HALF_UP); 保留3位小数并四舍五入 |
BigDecimal | multiply(BigDecimal bd) | 乘法 |
BigDecimal | subtract(BigDecimal bd) | 减法 |
测试代码
// 这个类用来测试 浮点数运算
public class Test4_Double
public static void main(String[] args)
method();
public static void method()
// 接收用户输入的两个小数
System.out.print("输入第一个小数: ");
double a = new Scanner(System.in).nextDouble();
System.out.print("输入第二个小数: ");
double b = new Scanner(System.in).nextDouble();
// 创建对象
BigDecimal bd1 = new BigDecimal(a + "");
BigDecimal bd2 = new BigDecimal(b + "");
// 做运算
BigDecimal bd3; // 定义bd3保存计算结果
bd3 = bd1.add(bd2);
System.out.println(bd3);
bd3 = bd1.subtract(bd2);
System.out.println(bd3);
bd3 = bd1.multiply(bd2);
System.out.println(bd3);
// bd3 = bd1.divide(bd2); // 除不尽. 抛出异常
// 保留3位小数并四舍五入
bd3 = bd1.divide(bd2, 3, BigDecimal.ROUND_HALF_UP);
System.out.println(bd3);
bigdecimal详解(代码片段)
BigDecimal详解BigDecimal介绍BigDecimal常见方法创建加减乘除大小比较保留几位小数BigDecimal等值比较问题BigDecimal工具类分享总结《阿里巴巴Java开发手册》中提到:“为了避免精度丢失,可以使用BigDecimal来进行浮点数的运算”... 查看详情
bigdecimal使用整理(代码片段)
BigDecimal使用整理一、 BigDecimal简介计算机计算中无论是float还是double都是浮点数,由于计算机是二进制的,导致在在浮点数计算时会出现精度丢失,因此引入BigDecimal(java.math.BigDecimal)。Java在java.math包中提供的A... 查看详情
bigdecimal(代码片段)
BigDecimaljava.math.BigDecimal为了解决java中浮点数运算不精确,用这个类可以很好的解决常用构造器建议使用String类型构造方法,否则使用double类型进行初始化可能还是不精确,因为double本身就不够精确构造器说明BigDecimal(Stringval)val必须... 查看详情
避免使用bigdecimal(double)(代码片段)
文章目录BigDecimal(double)存在精度损失风险,在精确计算或值比较的场景中可能会导致业务逻辑异常。//BigDecimal反例BigDecimalbigDecimal=newBigDecimal(0.11D);//BigDecimal正例BigDecimalbigDecimal1=bigDecimal.valueOf(0.11D); 查看详情
bigdecimal计算(代码片段)
...学计算或者是工程计算,在商业计算中我们要用java.math.BigDecimal。,而且使用BigDecimal类也可以进行大数的操作。表11-15BigDecimal类的常用方法,具体参考API http://download.java.net/jdk/jdk-api- 查看详情
bigdecimal的坑(代码片段)
...double、float等类型,而是要使用对精度支持的更好的BigDecimal。但是使用BigDecimal的equals方法并不能验证两个数是否真的相等(为什么阿里巴巴禁止使用BigDecimal的equals方法做等值比较?)。除了这个情况,BigDecima... 查看详情
bigdecimal类(代码片段)
一般情况下,计算机不能精确地表示浮点数。Bigdecimal类则可以精确地表示浮点数,并可以对浮点数进行精确的数学计算。 构造函数:BigDecimal(Stringnum) 传入一个String类型的数值,因为参数直接使用浮点数,计算... 查看详情
bigdecimal实现精确加减乘除运算(代码片段)
BigDecimal一共有4个够造方法,让我先来看看其中的两种用法:第一种:BigDecimal(doubleval)TranslatesadoubleintoaBigDecimal.第二种:BigDecimal(Stringval)TranslatestheStringrepresentationofaBigDecimalintoaBigDecimal.使用BigDecimal要用String来 查看详情
bigdecimal用法(代码片段)
BigDecimal用法importvo.Student;importjava.math.BigDecimal;/***@ClassName:BigDecimalTest*@Author:江湖@小小白*@Date:2021/12/2711:00*@Description:BigDecimal类型介绍*/publicclassBigDecimalTestpublicstaticvoidmain(String[]args)Studentstudent=newStudent();student.setAge(... 查看详情
bigdecimal相关整理(代码片段)
bigdecimal类型四则运算: BigDecimals=newBigdecimal(5); BigDecimalx=newBigdecimal(15);依次为最基础的加减乘除: s.add(x); s.substract(x); s.multiply(x); s.divide(x);Bigdecimal类型比较大小:s1.compareTo(s2);返回结果:整形,1是大于,0是等 查看详情
markdown金额数据的bigdecimal(代码片段)
bigdecimal乘法(代码片段)
BigDecimalresult=newBigDecimal(doubleValue).multiply(factor2);publicclassPaymentBigDecimalitemCost;BigDecimaltotalCost;//Youcaninitializeitifyouwish.publicBigDecimalcalculateCost(intitemQuantity,BigDecimalitemPrice)itemCost=itemPrice.multiply(newBigDecimal(itemQuantity));totalCost=totalCost.add(item... 查看详情
bigdecimal去除结尾的0(代码片段)
JAVA中使用BigDecimal保存时,容易在后面生成.000000可以在MySQL中调整保存的精度,还可以通过JsonSerializer进行序列化时进行处理代码如下:/***@project:*@author:*@Date:2020-12-0310:12上午*@describe:实现bigDecimal字段返回前端去0*使用方法在字段上面... 查看详情
bigdecimal精度丢失处理(代码片段)
BigDecimal有参构造方法,传入double,float会丢失精度。运行下面代码,期待结果都是11、1.1、1.1、1.1,实际结果:111.11.1000000000000000888178419700125232338905334472656251.10000002384185791015625BigDecimalbigDecimal=newBigDecimal(11);Sys... 查看详情
java中如何比较两个bigdecimal以及bigdecimal的坑(代码片段)
Java中如何比较两个BigDecimal以及BigDecimal的坑一、背景我们经常要比较两个数字是否相等,两个数字可以是整数、小数,我们也知道浮点数如float、double在java里是不准确的,那就会使用到BigDecimal来比较,那有些坑就... 查看详情
bigdecimal加减乘除运算(代码片段)
最近使用较为频繁,转载以供参考:java.math.BigDecimal。BigDecimal一共有4个够造方法,让我先来看看其中的两种用法:第一种:BigDecimal(doubleval)TranslatesadoubleintoaBigDecimal.第二种:BigDecimal(Stringval)Tran 查看详情
bigdecimal操作(代码片段)
初始化BigDecimalBigDecimal初始化为0BigDecimalone=newBigDecimal(0)BigDecimaladd方法在java中,BigDecimal的add方法是个坑。BigDecimala=newBigDecimal(1);BigDecimalb=newBigDecimal(2);现在,我们想要做这样的事情:a=a+b;如果这么写:a.add(b);是不对的;如果这么... 查看详情
bigdecimal简单使用(代码片段)
目录为什么使用BigDecimal解决方案构造方法类型转换double转BigDecimalBigDecimal转StringBigDecimal转double/int/long等加减乘除取余divide舍入模式比较大小格式化(DecimalFormat)小结为什么使用BigDecimal1.float和double类型的主要设计目标是为了科学计... 查看详情