玖叶教程网

前端编程开发入门

新来的小伙用BigDecimal表示金额,差点被经理开除

BigDecimal的原罪

你是否遇到过这样的问题:

JAVA之学习biginteger类的使用和bigdecimal类的使用

biginteger类的使用

  • A:BigInteger的概述

  • * 可以让超过Integer范围内的数据进行运算

JAVA常用类库的学习



为什么float和double运算会丢失精度?BigDecimal就一定靠谱?

先讨论一下float和double运算丢失精度问题

在java开发中,你也许会遇到浮点数时会丢失精度,那么先看看例子。

浅谈java中的数学运算

在实际的java项目中,不可避免地使用到各种运算,比如生成各种报表,数据的汇总等。对于这些问题,大致有2种解决途径,一种是在数据库查询时进行相关运算,直接得到所需要汇总计算后的结果;另外一种,是根据查询到的数据进行运算加工成所需的汇总数据。

当然,就实际情况而言,是推荐使用第一种的,毕竟所有的或者说大部分的运算都通过数据库进行,可以节省时间,提高效率。但是,实际情况是,在绝大多数的情况下,只通过查询来进行汇总不太现实,毕竟,有些汇总的逻辑是很复杂的,不可避免地还要对查询出来的数据进行再加工。加工的基础,当然就是最简单的java运算了,通过运算符或者是Math类提供的方法进行运算。但是,现实情况是,这些简单的运算可能不能满足绝大部分的运算需求,这时,就需要使用java中专业的数学运算类BigInteger和BigDecimal,本文简单讲述BigDecimal的使用。

Java中BigDecimal处理小数点

  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 则表示 加法, 减法,和乘法

「Java基础11」常用API


目录

  • 1. Object
    • 1.1 toString
    • 1.2 equals
  • 2. Objects
    • 2.1 equals

被JDK坑的没商量?来试试这些方法吧

前言

Vue项加减乘除四则运算公共方法

Vue项目中对于数值计算方面通过bigDecimal进行加减乘除四则运算

首先先安装js-big-decimal

npm install -save js-big-decimal

Java面试题之BigDecimal 初始化赋值方式

BigDecimal类

对于不需要任何准确计算精度的数字可以直接使用float或double,但是如果需要精确计算的结果,则必须使用BigDecimal类,而且使用BigDecimal类也可以进行大数的操作。

<< < 1 2 3 4 5 > >>
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言