展开

关键词

new Bigdecimal(double) 和 Bigdecimal.valueof()和BigDecimal(String)

有人可能认为在Java中写入newBigDecimal(0.1)所创建的BigDecimal正好等于 0.1(非标度值 1,其标度为 1),但是它实际上等于0.1000000000000000055511151231257827021181583404541015625 BIgDecimal(double):当double必须用作BigDecimal的源时,请注意,此构造方法提供了一个准确转换之后,才用Double.toString(double)方法,然后使用BigDecimal BIgDecimal.valueof(double) 这个方法没有提供准确转换,而是直接是用Double.toString(double)方法,然后使用BigDecimal(String)构造方法,所以这个方法可用 BigDecimal(String) :这个一看就看出来了,直接就使用BigDecimal(String)构造方法了,这个是最好的。 总结:推荐使用BigDecimal.valueof(String) 和 BingDecimal(String) 这两个方法,不会出现精度的问题。

61610

BigDecimal

BigDecimal a = new BigDecimal("1.0"); BigDecimal b = new BigDecimal("0.9"); BigDecimal c = new BigDecimal BigDecimal a = new BigDecimal("1.0"); BigDecimal b = new BigDecimal("0.9"); System.out.println(a.compareTo BigDecimal m = new BigDecimal("1.255433"); BigDecimal n = m.setScale(3,BigDecimal.ROUND_HALF_DOWN); System.out.println (n);// 1.255 4.BigDecimal 的使用注意事项 注意:我们在使用BigDecimal时,为了防止精度丢失,推荐使用它的 BigDecimal(String) 构造方法来创建对象。 BigDecimal 的实现利用到了 BigInteger, 所不同的是 BigDecimal 加入了小数位的概念

15710
  • 广告
    关闭

    什么是世界上最好的编程语言?丨云托管征文活动

    代金券、腾讯视频VIP、QQ音乐VIP、QB、公仔等奖励等你来拿!

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    BigDecimal

    BigDecimal 的用处 Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。 BigDecimal a = new BigDecimal("1.0"); BigDecimal b = new BigDecimal("0.9"); BigDecimal c = new BigDecimal BigDecimal a = new BigDecimal("1.0"); BigDecimal b = new BigDecimal("0.9"); System.out.println(a.compareTo BigDecimal m = new BigDecimal("1.255433"); BigDecimal n = m.setScale(3,BigDecimal.ROUND_HALF_DOWN); System.out.println (n);// 1.255 BigDecimal 的使用注意事项 注意:我们在使用BigDecimal时,为了防止精度丢失,推荐使用它的 BigDecimal(String) 构造方法来创建对象。

    20510

    BigDecimal大小判断

    BigDecimal详解: Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。 BigDecimal所创建的是对象,我们不能使用传统的+、-、、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。方法中的参数也必须是BigDecimal的对象。 ()方法的声明 public int compareTo(BigDecimal val) 参数: val-- 要与此BigDecimal比较的值。 返回值: 此方法,如果BigDecimal为小于val返回-1,如果BigDecimal为大于val返回1,如果BigDecimal为等于val返回0 下面的示例演示math.BigDecimal.compareTo public class BigdecimalTest { public static void main(String[] args) { BigDecimal z1 = new BigDecimal

    1.4K30

    BigDecimal 除法

    ---- ROUND_UP 示例: BigDecimal b1 = new BigDecimal("1.11"); BigDecimal b2 = new BigDecimal("1.10"); BigDecimal b1 = new BigDecimal("1.11"); BigDecimal b2 = new BigDecimal("1.10"); BigDecimal one = new BigDecimal b1 = new BigDecimal("-1.11"); BigDecimal b2 = new BigDecimal("1.11"); BigDecimal one = new BigDecimal b1 = new BigDecimal("-1.11"); BigDecimal b2 = new BigDecimal("1.11"); BigDecimal one = new BigDecimal b1 = new BigDecimal("1.14"); BigDecimal b2 = new BigDecimal("1.15"); BigDecimal one = new BigDecimal

    6730

    BigDecimal比较大小,BigDecimal保留几位小数,BigDecimal和0比较大小

    1.BigDecimal比较大小,compareTo方法,-1小于,0相等,1大于 // 值为-1,big1<big2;值为0,相等;值为1,big1>big2 BigDecimal big1 = new BigDecimal(4.4252423); BigDecimal big2 = new BigDecimal(2.3742874234); int result = big1.compareTo (big2); int resultz = big1.compareTo(BigDecimal.ZERO);//和0比比较特殊 2.BigDecimal保留小数位数,下面两种都是四舍五入 //保留4 位小数   括号里的参数是几就是几位 BigDecimal result2 = big2.setScale(4,BigDecimal.ROUND_HALF_UP);//2.3743 double     result3 = big1.setScale(4,BigDecimal.ROUND_HALF_UP).doubleValue();//4.4252 //保留4位小数 #.0000几个0就是几位小数

    5.9K20

    BigDecimal除法运算报错

    今天在运用BigDecimal做除法运算的时候,错误如下: Non-terminating decimal expansion; no exact representable decimal result 不是很明白为什么会这个样子,度娘告诉我是因为BigDecimal 做除法运算,如果除的结果为无限小数的时候就会报错。 解决方法是: divide(BigDecimal divisor, int scale, int roundingMode)指定scale和roundingMode 附上很详细解说一份http:/

    4540

    BigDecimal和BigInteger

    后面这截取的无限小数还原成十进制就会损失精度不准确,不能用等值判断了 救星 BigDecimal的横空出世是为了解决浮点数的精度问题,其全限定类名为 java.math.BigDecimalBigDecimal BigDecimal基本使用 2.1 常见构造方法 方法 描述 BigDecimal(int val) 将int转换成BigDecimal BigDecimal(int val, MathContext mc) 根据上下设置进行舍入 BigDecimal(long val) 将long转换成BigDecimal BigDecimal(double) 将double转换成BigDecimal BigDecimal 舍入模式) 阿里手册规约:禁止使用构造方法 BigDecimal(double)的方式把 double 值转化为 BigDecimal 对象 BigDecimal num1 = new BigDecimal num1 = new BigDecimal("0.01234"); BigDecimal num2 = new BigDecimal("0.56789"); --------------------

    35210

    BigDecimal的除法

    BigDecimal divideBigDecimal = subBigDecimal.divide(new BigDecimal(13),0,BigDecimal.ROUND_HALF_UP); 第一参数表示除数

    6420

    BigDecimal除法问题

    BigDecimal做除法时,尽量使用divide(BigDecimal divisor, int scale, int roundingMode),这个方法 divisor:被除数 scale保留小数位数 roundingMode保留小数时采用的方法,一般使用BigDecimal.ROUND_UP(四舍五入) 如果不指定保留小数位数,在遇到除不尽的情况下就会报错 BigDecimal源码: try

    5520

    BigDecimal类型divide报错

    原来JAVA中如果用BigDecimal做除法的时候一定要在divide方法中传递第二个参数,定义精确到小数点后几位,否则在不整除的情况下,结果是无限循环小数时,就会抛出以上异常。 解决方法: foo.divide(bar, 2, BigDecimal.ROUND_HALF_UP);

    48020

    Java之BigDecimal详解

    一、BigDecimal概述 ​ Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。 二、BigDecimal常用构造函数 2.1、常用构造函数 BigDecimal(int) 创建一个具有参数所指定整数值的对象 BigDecimal(double) 创建一个具有参数所指定双精度值的对象 三、BigDecimal常用方法详解 3.1、常用方法 add(BigDecimal) BigDecimal对象中的值相加,返回BigDecimal对象 subtract(BigDecimal) BigDecimal 对象中的值相减,返回BigDecimal对象 multiply(BigDecimal) BigDecimal对象中的值相乘,返回BigDecimal对象 divide(BigDecimal) BigDecimal () 将BigDecimal对象中的值转换成单精度数 longValue() 将BigDecimal对象中的值转换成长整数 intValue() 将BigDecimal对象中的值转换成整数 3.2

    48920

    BigDecimal知识回顾

    介绍 我们之前做的民生银行的培训系统时大量的用到了BigDecimal用于计算学分和金额等数据,那为什么这类数据不用double而是用Bigdecimal,接下来进行小结一下 Bigdecimal是java.math (){ BigDecimal h = new BigDecimal("0.00"); BigDecimal k = BigDecimal.ZERO; System.out.println (){ BigDecimal a = new BigDecimal("2.12"); BigDecimal b = new BigDecimal("0.2"); @Test public void bigDecimal1(){ BigDecimal h = new BigDecimal(1.0); BigDecimal BigDecimal recommend1 = new BigDecimal("0.1"); BigDecimal recommend2 = BigDecimal.valueOf(0.1); 用double

    6420

    关于BigDecimal中divide方法中的BigDecimal.ROUND_HALF_UP和BigDecimal.ROUND_HALF_DOWN

    大家好,今天给大家说一下BigDecimal中divide方法中的BigDecimal.ROUND_HALF_UP和BigDecimal.ROUND_HALF_DOWN。 public BigDecimal divide(BigDecimal divisor,int scale, int roundingMode) 第一个参数是除数,第二个参数代表保留几位小数,第三个代表的是使用的模式 其中我们标题上就是其中的两种 BigDecimal.ROUND_DOWN:直接省略多余的小数,比如1.28如果保留1位小数,得到的就是1.2 BigDecimal.ROUND_UP:直接进位 ,比如1.21如果保留1位小数,得到的就是1.3 BigDecimal.ROUND_HALF_UP:四舍五入,2.35保留1位,变成2.4 BigDecimal.ROUND_HALF_DOWN 看如下案例: BigDecimal d1 = new BigDecimal (45); //45除以7=6.428571428571429 BigDecimal d2

    28840

    Kotlin BigDecimal 精确计算

    (d1).add(BigDecimal(d2)).setScale(DECIMAL_POINT_NUMBER,BigDecimal.ROUND_DOWN).toDouble() // 减法运算 @JvmStatic fun sub(d1:Double,d2: Double):Double = BigDecimal(d1).subtract(BigDecimal(d2)).setScale ,d2: Double,decimalPoint:Int):Double = BigDecimal(d1).multiply(BigDecimal(d2)).setScale(decimalPoint, = BigDecimal(d1).divide(BigDecimal(d2)).setScale(DECIMAL_POINT_NUMBER,BigDecimal.ROUND_DOWN).toDouble ,例如:2.125 → 2.12 setScale(2, BigDecimal.ROUND_UP) //进位处理,例如:2.125 → 2.13 setScale(2, BigDecimal.ROUND_HALF_UP

    2.7K20

    BigDecimal常用方法详解

    一、BigDecimal概述 ​ Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。 二、BigDecimal常用构造函数 2.1、常用构造函数 BigDecimal(int) 创建一个具有参数所指定整数值的对象 BigDecimal(double) 创建一个具有参数所指定双精度值的对象 三、BigDecimal常用方法详解 3.1、常用方法 add(BigDecimal) BigDecimal对象中的值相加,返回BigDecimal对象 subtract(BigDecimal) BigDecimal对象中的值相减,返回BigDecimal对象 multiply(BigDecimal) BigDecimal对象中的值相乘,返回BigDecimal对象 divide(BigDecimal ) BigDecimal对象中的值相除,返回BigDecimal对象 toString() 将BigDecimal对象中的值转换成字符串 doubleValue() 将BigDecimal对象中的值转换成双精度数

    1.3K00

    BigDecimal 加减乘除

    换句话说,就是数值较大,这时候就用到了BigDecimal 下载整理了一下BigDecimal 的加减乘除。。 BigDecimal bignum1 = new BigDecimal("10"); BigDecimal bignum2 = new BigDecimal("5"); BigDecimal bignum3 BigDecimal num1 = new BigDecimal("0"); BigDecimal num2 = new BigDecimal("1"); BigDecimal num3 = new 补充: BigInteger 也可以存放比较大的数, 和 BigDecimal 的区别是 :BigInteger 存放的是大的整数,而BigDecimal 存放大的小数 继续补充一下,用BigDecimal for (BigDecimal i = new BigDecimal("0"); i.compareTo(new BigDecimal("10")) !

    7310

    Java BigDecimal的使用

    BigDecimal加减乘除 BigDecimal bignum1 = new BigDecimal("10"); BigDecimal bignum2 = new BigDecimal("5"); (一)BigDecimal类的常用的几个构造方法 BigDecimal(int):将int表示形式转换为BigDecimal对象 BigDecimal(String) :将字符串表示形式转换为BigDecimal 对象 BigDecimal(double):将double表示形式转换为BigDecimal对象 (二)BigDecimal类的常用方法 add(BigDecimal):BigDecimal对象中的值相加 ,返回BigDecimal对象 subtract(BigDecimal):BigDecimal对象中的值相减,返回BigDecimal对象 multiply(BigDecimal):BigDecimal 对象中的值相乘,返回BigDecimal对象 divide(BigDecimal):BigDecimal对象中的值相除,返回BigDecimal对象 toString():将BigDecimal对象中的值转换成字符串

    5020

    基础类型BigDecimal简介

    mc) 将 BigDecimal 的字符数组表示形式转换为 BigDecimal允许指定子数组根据上下文设置进行舍入 BigDecimal(char[] in, int offset, int len ) 上一个方法的简化默认形式 BigDecimal(char[] in) 简化形式 BigDecimal(char[] in, MathContext mc) 简化形式 BigDecimal(String (char[] in, int offset, int len, MathContext mc) BigDecimal(int val) int 转换为 BigDecimal BigDecimal(int val, MathContext mc) int 转换为 BigDecimal根据上下文设置进行舍入 BigDecimal(long val) long 转换为 BigDecimal BigDecimal BigDecimal(double val, MathContext mc) double 转换为 BigDecimal根据上下文设置进行舍入 构造方法注意事项 BigDecimal(double

    71041

    Java-BigDecimal数据类型

    但是,商业计算往往要求更加精确的结果,这时候BigDecimal的重要性就不言而喻了! BigDecimal简介 BigDecimal 由任意精度的整数非标度值和32位的整数组成。 BigDecimal一共有4个构造方法: BigDecimal(int) 创建一个具有参数所指定整数值的对象。 BigDecimal(double) 创建一个具有参数所指定双精度值的对象。 BigDecimal 的运算方式,不支持 + - * / 这类的运算,它有自己的运算方法: BigDecimal add(BigDecimal augend) 加法运算。 BigDecimal subtract(BigDecimal subtrahend) 减法运算。 BigDecimal multiply(BigDecimal multiplicand) 乘法运算。 BigDecimal divide(BigDecimal divisor) 除法运算。

    69820

    扫码关注腾讯云开发者

    领取腾讯云代金券