bigdecimal(代码片段)

zpkang zpkang     2022-12-13     532

关键词:

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类型的主要设计目标是为了科学计... 查看详情