首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    BigDecimal的除法

    大家好,又见面了,我是你们的朋友全栈君。...BigDecimal divideBigDecimal = subBigDecimal.divide(new BigDecimal(13),0,BigDecimal.ROUND_HALF_UP); 第一参数表示除数...,除非两边(的距离)是相等,如果是这样,向下舍入, 例如1.55 保留一位小数结果为1.5 ROUND_HALF_EVEN //向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,如果保留位数是奇数...,使用ROUND_HALF_UP,如果是偶数,使用ROUND_HALF_DOWN ROUND_HALF_UP //向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向上舍入, 1.55...保留一位小数结果为1.6 ROUND_UNNECESSARY //计算结果是精确的,不需要舍入模式 ROUND_UP //向远离0的方向舍入 发布者:全栈程序员栈长,转载请注明出处:https

    1.9K20

    Java BigDecimal的使用

    API类BigDecimal,用来对超过16位有效位的数进行精确的运算。...(一)BigDecimal类的常用的几个构造方法 BigDecimal(int):将int表示形式转换为BigDecimal对象 BigDecimal(String) :将字符串表示形式转换为BigDecimal...对象 BigDecimal(double):将double表示形式转换为BigDecimal对象 (二)BigDecimal类的常用方法 add(BigDecimal):BigDecimal对象中的值相加...对象中的值相乘,返回BigDecimal对象 divide(BigDecimal):BigDecimal对象中的值相除,返回BigDecimal对象 toString():将BigDecimal对象中的值转换成字符串...doubleValue():将BigDecimal对象中的值转换成双精度数 floatValue():将BigDecimal对象中的值转换成单精度数 longValue():将BigDecimal对象中的值转换成长整数

    43820

    java.lang.NumberFormatException: Infinite or NaN原因之浮点类型除数为0结果探究

    背景 在对Double类型的数据进行计算操作,将结果转化为BigDecimal时抛出了下面的异常,进行了Debug才发现了问题原因,同时也暴露出了自己在一些基础知识上还有些欠缺。...Exception in thread "main" java.lang.NumberFormatException: Infinite or NaN at java.math.BigDecimal....(BigDecimal.java:895) at java.math.BigDecimal....打印出来的Infinity、-Infinit、NaN其实不是字符串,而是double类型的常量,查看源码注释便懂了。...异常原因   通过查看BigDecimal类中针对Double类型数据的构造方法,我们知道了,在构造BigDecimal对象时,构造方法中传入的Double类型为无穷大或非数字时会抛出NumberFormatException

    48910

    使用 BigDecimal 的正确方式

    BigDecimal所创建的是对象,故我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。方法中的参数也必须是BigDecimal的对象。...BigDecimal(long) 创建一个具有参数所指定长整数值的对象 BigDecimal(String) 创建一个具有参数所指定以字符串表示的数值的对象 2.2、使用问题分析 使用示例: BigDecimal...BigDecimal对象中的值相减,返回BigDecimal对象 「multiply(BigDecimal)」 BigDecimal对象中的值相乘,返回BigDecimal对象 「divide(BigDecimal...)」 BigDecimal对象中的值相除,返回BigDecimal对象 「toString()」 将BigDecimal对象中的值转换成字符串 「doubleValue()」 将BigDecimal对象中的值转换成双精度数...首先,创建BigDecimal对象,进行BigDecimal的算术运算后,分别建立对货币和百分比格式化的引用,最后利用BigDecimal对象作为format()方法的参数,输出其格式化的货币值和百分比

    1.2K20

    BigDecimal除法的精度问题

    BigDecimal除法的精度问题 在使用BigDecimal的除法时,遇到一个鬼畜的问题,本以为的精度计算,结果使用返回0,当然最终发现还是自己的使用姿势不对导致的,因此记录一下,避免后面重蹈覆辙 I...问题抛出 在使用BigDecimal做高精度的除法时,一不注意遇到了一个小问题,如下 @Test public void testBigDecimal() { BigDecimal origin...不是高精度的计算么,讲道理不应该不会出现这种整除的问题吧 我们知道在BigDecimal做触发时,可以指定保留小数的参数,如果加上这个,是否会不一样呢?...小结 对于BigDecimal进行除法运算时,最好指定其scale参数,不然可能会有坑 对于BigDecimla的scale初始化的原理,有待深入看下BigDecimal是怎么实现的 II....声明 尽信书则不如,已上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn

    51830

    Java中的BigDecimal详解

    BigDecimal类 对于不需要任何准确计算精度的数字可以直接使用float或double,但是如果需要精确计算的结果,则必须使用BigDecimal类,而且使用BigDecimal类也可以进行大数的操作...// 0.1 // 0.1 // 0.1 分析: 第一行:事实上,由于二进制无法精确地表示十进制小数0.1,但是编译器读到字符串"0.1"之后,必须把它转成8个字节的double值,因此,编译器只能用一个最接近的值来代替...Double.toString(0.1000000000000000055511151231257827021181583404541015625)输出的事实上是"0.1",因此生成的BigDecimal...第四行:基于前面的分析,事实上这一行代码等价于第三行 结论: 1.如果你希望BigDecimal能够精确地表示你希望的数值,那么一定要使用字符串来表示小数,并传递给BigDecimal的构造函数。...(3) BigDecimal都是不可变的(immutable)的,在进行每一步运算时,都会产生一个新的对象,所以在做加减乘除运算时千万要保存操作后的值。

    58720

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

    大家好,今天给大家说一下BigDecimal中divide方法中的BigDecimal.ROUND_HALF_UP和BigDecimal.ROUND_HALF_DOWN。...这两个类的用法其实在网上已经介绍的很多的。但是有一些注意事项还是要需要了解一下。 首先说一下用法,BigDecimal中的divide主要就是用来做除法的运算。...public BigDecimal divide(BigDecimal divisor,int scale, int roundingMode) 第一个参数是除数,第二个参数代表保留几位小数,第三个代表的是使用的模式...其中我们标题上就是其中的两种 BigDecimal.ROUND_DOWN:直接省略多余的小数,比如1.28如果保留1位小数,得到的就是1.2 BigDecimal.ROUND_UP:直接进位...= new BigDecimal (7); d1.divide(d2,5,BigDecimal.ROUND_UP);//得到的结果就是6.42858,直接进位 但是要注意的点在这里

    5.6K40

    Java之BigDecimal的高级使用

    引入 使用Java开发的朋友,对于数据相关的计算想必都有过头疼的经历。float和double类型的主要设计目标是为了科学计算和工程计算。...今天就分享一个关于小数精确计算的类(BigDecimal)高级用法。...1、加减乘除的简单封装; 2、引入Lambda表达式的聚合计算; 3、关于复杂对象的数组根据某一字段的值聚合计算; 0 2 撸代码 封装,是身为一个好程序猿的必备技能。...前提:Java8+(为了使用Lambda) 注意点:BigDecimal都是不可变的(immutable)的,在进行每一步运算时,都会产生一个新的对象,所以在做加减乘除运算时千万要保存操作后的值。...(场景一) //传统的求和,可能会是遍历list ‍BigDecimal rs = BigDecimal.ZERO; ListBigDecimal> list = new ArrayList();

    1.4K30

    180706-BigDecimal除法的精度问题

    BigDecimal除法的精度问题 在使用BigDecimal的除法时,遇到一个鬼畜的问题,本以为的精度计算,结果使用返回0,当然最终发现还是自己的使用姿势不对导致的,因此记录一下,避免后面重蹈覆辙...,讲道理不应该不会出现这种整除的问题吧 我们知道在BigDecimal做触发时,可以指定保留小数的参数,如果加上这个,是否会不一样呢?...整形传参构造 分析下面这一行, 直接进入源码 BigDecimal origin = new BigDecimal(541253); 很明显的int传参构造,进去简单看一下 // java.math.BigDecimal...小结 对于BigDecimal进行除法运算时,最好指定其scale参数,不然可能会有坑 对于BigDecimla的scale初始化的原理,有待深入看下BigDecimal是怎么实现的 最后贴一张乘法的图作为收尾...声明 尽信书则不如,已上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激

    76810
    领券