技术交流QQ群【JAVA,C++,Python,.NET,BigData,AI】:170933152 

之前项目都很少用这个BigDecimal啊,最近这个项目对精度要求高,一个电视购物,广告拍摄,排挡等功能的项目,对BigDecimal 大量使用...

2019/05/13 追加: 小数位操作:

BigDecimal.setScale()方法用于格式化小数点 
setScale(1)表示保留一位小数,默认用四舍五入方式 
setScale(1,BigDecimal.ROUND_DOWN)直接删除多余的小数位,如2.35会变成2.3 
setScale(1,BigDecimal.ROUND_UP)进位处理,2.35变成2.4 
setScale(1,BigDecimal.ROUND_HALF_UP)四舍五入,2.35变成2.4

setScaler(1,BigDecimal.ROUND_HALF_DOWN)四舍五入,2.35变成2.3,如果是5则向下舍

setScaler(1,BigDecimal.ROUND_CEILING)接近正无穷大的舍入

setScaler(1,BigDecimal.ROUND_FLOOR)接近负无穷大的舍入,数字>0和ROUND_UP作用一样,数字<0和ROUND_DOWN作用一样

setScaler(1,BigDecimal.ROUND_HALF_EVEN)向最接近的数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。

注释: 
1:scale指的是你小数点后的位数。比如123.456则score就是3. 
score()就是BigDecimal类中的方法啊。 
比如:BigDecimal b = new BigDecimal(“123.456”); 
b.scale(),返回的就是3. 
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方法的小数位格式化如下:

BigDecimal mData = new BigDecimal(“9.655”).setScale(2, BigDecimal.ROUND_HALF_UP); 
System.out.println(“mData=” + mData); 
—-结果:—– mData=9.66

 

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

ava.math.BigDecimal。BigDecimal一共有4个够造方法,让我先来看看其中的两种用法:

第一种:BigDecimal(double val)
Translates a double into a BigDecimal.

第二种:BigDecimal(String val)
Translates the String repre sentation of a BigDecimal into a BigDecimal.

使用BigDecimal要用String来够造,要做一个加法运算,需要先将两个浮点数转为String,然后够造成BigDecimal,在其中一个上调用add方法,传入另一个作为参数,然后把运算的结果(BigDecimal)再转换为浮点数。

 

 JAVA零碎要点015---java BigDecimal常见操作_加减乘除操作_比较_取几位小数四舍五入_随时更新

JAVA零碎要点015---java BigDecimal常见操作_加减乘除操作_比较_取几位小数四舍五入_随时更新

JAVA零碎要点015---java BigDecimal常见操作_加减乘除操作_比较_取几位小数四舍五入_随时更新

JAVA零碎要点015---java BigDecimal常见操作_加减乘除操作_比较_取几位小数四舍五入_随时更新

下面是BigDecimal的比较:

BigDecimal a = new BigDecimal (101);
BigDecimal b = new BigDecimal (111);
 
//使用compareTo方法比较
//注意:a、b均不能为null,否则会报空指针
if(a.compareTo(b) == -1){
    System.out.println("a小于b");
}
 
if(a.compareTo(b) == 0){
    System.out.println("a等于b");
}
 
if(a.compareTo(b) == 1){
    System.out.println("a大于b");
}
 
if(a.compareTo(b) > -1){
    System.out.println("a大于等于b");
}
 
if(a.compareTo(b) < 1){
    System.out.println("a小于等于b");
}
 

相关文章:

  • 2022-02-10
  • 2021-11-29
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-08
  • 2021-12-28
猜你喜欢
  • 2022-12-23
  • 2021-06-03
  • 2021-12-24
  • 2022-01-19
  • 2022-01-31
  • 2022-01-01
  • 2022-01-25
相关资源
相似解决方案