你是否遇到过这样的问题:BigDecimal的原罪
2024年04月09日
biginteger类的使用 A:BigInteger的概述 * 可以让超过Integer范围内的数据进行运算
2024年04月09日
在java开发中,你也许会遇到浮点数时会丢失精度,那么先看看例子。先讨论一下float和double运算丢失精度问题
2024年04月09日
在实际的java项目中,不可避免地使用到各种运算,比如生成各种报表,数据的汇总等。对于这些问题,大致有2种解决途径,一种是在数据库查询时进行相关运算,直接得到所需要汇总计算后的结果;另外一种,是根据查询到的数据进行运算加工成所需的汇总数据。 当然,就实际情况而言,是推荐使用第一种的,毕竟所有的或者说大部分的运算都通过数据库进行,可以节省时间,提高效率。但是,实际情况是,在绝大多数的情况下,只通过查询来进行汇总不太现实,毕竟,有些汇总的逻辑是很复杂的,不可避免地还要对查询出来的数据进行再加工。加工的基础,当然就是最简单的java运算了,通过运算符或者是Math类提供的方法进行运算。但是,现实情况是,这些简单的运算可能不能满足绝大部分的运算需求,这时,就需要使用java中专业的数学运算类BigInteger和BigDecimal,本文简单讲述BigDecimal的使用。
2024年04月09日
BigDecimal a1 = new BigDecimal("3.456");
a1 = a1.setScale(1, BigDecimal.ROUND_DOWN); //直接删除多余的小数位
System.out.println(a1); //3.4
BigDecimal a2 = new BigDecimal("3.456");
a2 = a2.setScale(1, BigDecimal.ROUND_UP); //进位处里
System.out.println(a2); //3.5
BigDecimal a3 = new BigDecimal("3.456");
a3 = a3.setScale(2, BigDecimal.ROUND_HALF_UP); //向上取整四舍五入
System.out.println(a3); //3.46
BigDecimal a4 = new BigDecimal("3.35");
a4 = a4.setScale(1, BigDecimal.ROUND_HALF_DOWN); //向下取整四舍五入
System.out.println(a4); //3.3
//1: scale指的是你小数点后的位数。比如82.568则score就是3
BigDecimal a5 = new BigDecimal("82.568");
System.out.println(a5.scale()); //获取 a5 这个数的小数位数
//2.roundingMode是小数的保留模式。它们都是BigDecimal中的常量字段,有很多种。
//比如:BigDecimal.ROUND_HALF_UP表示的就是4舍5入。
/*3.pubilc BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)
的意思是说:我用一个BigDecimal对象除以divisor后的结果,并且要求这个结果保留有scale个小数位,
roundingMode表示的就是保留模式是什么,是四舍五入啊还是其它的,你可以自己选 */
//4. 对于一般 add、subtract、multiply 则表示 加法, 减法,和乘法
2024年04月09日
Vue项目中对于数值计算方面通过bigDecimal进行加减乘除四则运算 首先先安装js-big-decimalnpm install -save js-big-decimal
2024年04月09日
对于不需要任何准确计算精度的数字可以直接使用float或double,但是如果需要精确计算的结果,则必须使用BigDecimal类,而且使用BigDecimal类也可以进行大数的操作。BigDecimal类