您的位置:首页 > 编程语言 > Java开发

用来计算数据量大的类&能精确控制小数的类----BigDecimal

2018-02-08 09:36 561 查看
首先先来了解一下BigDecimal类的继承关系:1.它属于java.math包。
2.继承关系:
 java.lang.Object
   |--java.lang.Number
       |-- java.math.BigDecimal
3.所有已实现的接口:
 Serializable,Comparable<BigDecimal>

需要记住:BigDecimal是Number的子类,其中Number是一个抽象类,为BigDecimal的格式转换功能提供了方法。

BigDecimal 类提供以下操作:算术、标度操作、舍入、比较、哈希算法和格式转换。因为本人也比较菜,做此文章只是为了熟记一下BigDecimal的精确小数功能,所以讲什么随心了...
 与BigInteger一样,BigDecimal拥有基本的数学运算方法,方法名都是像add、divide什么的,普遍好理解的名字,只要在开发工具(像eclipse等带有提示功能的)中输入就能有提示。 在这主要说的就是舍入的方法了,因为BigDecimal是通过除法来进行舍入的,所以要熟记下面这个方法:
public BigDecimal divide(BigDecimal divisor,
int scale,
int roundingMode)其参数:

divisor 是表示被除数。若只进行四舍五入可让divisor=1
scale  是表示结果保留小数位数
roundingMode 是表示要应用的舍入模式 

其中舍入模式有:(注这些舍入模式都为BigDecimal类的静态final方法)
public static final intROUND_HALF_UP :最常用的四舍五入模式
public static final intROUND_HALF_DOWN :五舍六入模式
[b]public static final int ROUND_UP:全部进一位
[/b]
public static final intROUND_DOWN: 直接全部舍去
等等,还有一些模式我至今没有遇到过,也就不提了
拿最普遍的四舍五入举例:
import java.math.BigDecimal;

public class H {

/**
* 实现准确的四舍五入
* @param num 需要进行四舍五入的数字
* @param scale 要保留的小数位
* @return 返回四舍五入后的数据
*/
public static double f(double num,int scale) {
//将double型数据转换为BigDecimal型
//其中num1为除数,num2为被除数
BigDecimal num1 = new BigDecimal(num);
BigDecimal num2 = new BigDecimal(1);

//其中 doubleValue()方法是BigDecimal类从Number抽象类中继承过来的,用来将BigDecimal型数据转换成double型数据
return num1.divide(num2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
}

public static void main(String[] args) {
System.out.println(f(59.4684315613215648,3));
System.out.println(f(59.4685315613215648,3));
System.out.println(f(-15.5,0));
System.out.println(f(15.5,0));
}
}运行结果为:
59.468
59.469
-16.0
16.0

就写到这了。写该文章的目的主要是为了让我自己能牢记一些知识点,并能熟练的操作。若写的不好或者有错误的地方,还请多多包容,也希望能指点一二。谢谢!

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 笔记