import java.math.*;
public class Test {
public static void main(String[] args) {
BigDecimal a=new BigDecimal(0.5);
BigDecimal b=new BigDecimal(0.2);
System.out.println(a.divide(b));
}
}
为什么会出错啊?
0.5除以0.2 不就是2.5么?
错误信息:
Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
BigDecimal的除法,需要指定计算答案的精度,那样肯定会报异常。
MathContext mc = new MathContext(2, RoundingMode.HALF_DOWN);
BigDecimal a = new BigDecimal(0.5);
BigDecimal bd1 = new;
BigDecimal("30000000000000000000000000000000000000000000000000000000000");
BigDecimal bd2 = new BigDecimal(3);
//MathContext,第一个参数表示你要保留几位小数,第二参数表示最后一位是取顶。
构造方法
BigDecimal一共有4个构造方法:
BigDecimal(int) 创建一个具有参数所指定整数值的对象。
BigDecimal(double) 创建一个具有参数所指定双精度值的对象。(不建议采用)
BigDecimal(long) 创建一个具有参数所指定长整数值的对象。
BigDecimal(String) 创建一个具有参数所指定以字符串表示的数值的对象。
关于BigDecimal的divide()方法。。。求解。。。
构造方法 BigDecimal一共有4个构造方法:BigDecimal(int) 创建一个具有参数所指定整数值的对象。BigDecimal(double) 创建一个具有参数所指定双精度值的对象。(不建议采用)BigDecimal(long) 创建一个具有参数所指定长整数值的对象。BigDecimal(String) 创建一个具有参数所指定以字符串表示的数值的对象。
java的bigdecimal类的用法
首先是bigdecimal的初始化,加法 add()函数、减法subtract()函数、乘法multiply()函数、除法divide()函数、绝对值abs()函数。注意:1)System.out.println()中的数字默认是double类型的,double类型小数计算不精准。2)使用BigDecimal类构造方法传入double类型时,计算的结果也是不精确的!因为不是所有的浮点...
BigDecimal类有哪些方法和用法?
4. 除法:使用divide()方法,如:BigDecimal div = ***.divide(mdBigDecimal); 输出为"除法:" + div。BigDecimal类还提供了4个构造函数,用于根据不同的需求创建对象:(1)int类型,如BigDecimal(int value);(2)double类型,但不建议使用BigDecimal(double),因为可能存在精度损失;(3)long类型...
关于BigDec方法。。。求解。。。
BigDecimal b = new BigDecimal(0.2);System.out.println(a.divide(b, mc)); \/\/ 明确精度后进行除法运算 这样,当你在BigDecimal的除法运算中使用这个MathContext,就可以确保得到预期的2.5结果,而不会因为精度问题引发异常。务必记得在进行除法操作前设置合适的精度,以确保运算的正确性。
bigdecimal加减乘除运算顺序
bigdecimal的运算顺序涉及其基础操作,包括初始化和各类函数的调用。首先,你需要进行加法add()、减法subtract()、乘法multiply()以及除法divide()的运算。同时,绝对值abs()也是常用的功能之一。在使用过程中,需要注意以下几点:系统默认的打印方法system.***.println()中,如果涉及double类型数值,可能存在...
怎么解决BigDecimal里面无限循环小数的问题
通过BigDecimal的divide方法进行除法时当不整除,出现无限循环小数时,就会抛这个异常。解决之道:就是给divide设置精确的小数点divide(xxxxx,2, BigDecimal.ROUND_HALF_EVEN);
java中 BigDecimal的类型的除法
package cn.itcast_02; import java.math.BigDecimal; \/* * 构造方法: * public BigDecimal(String val): * * 金融相关的东西(例:银行钱的小数,商品价格小数,实验小数) * * 成员方法: * public BigDecimal add(BigDecimal augend):加 * public BigDecimal subtract...
BigDecimal使用详解
一、构造方法 BigDecimal的构造方法有很多种,大家最常用的如下方式:BigDecimal bd1=new BigDecimal(10);BigDecimal bd2=new BigDecimal("10");二、四则预算 加法:bigDecimal1.add(bigDecimal2);减法:bigDecimal1.subtract(bigDecimal2);乘法:bigDecimal1.multiply(bigDecimal2);除法:bigDecimal1.divide(...
BigDecimal笔记
在执行除法运算时,可能出现非终止的十进制展开。这通常是因为BigDecimal需要确切的数值,但在除法过程中可能产生无限循环,导致无法获得精确结果。为解决此问题,在使用divide方法时,可采用四舍五入或其他获取近似值的方法,避免精度丢失。divide方法定义 BigDecimal.divide(BigDecimal divisor, int scale, ...
bigdecimal加减乘除有哪些?
BigDecimal除法可能出现不能整除的情况,比如 4.5\/1.3,这时会报错java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result。其实divide方法有可以传三个参数:public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode) 第一参数表示除数, ...