BigDecimal类型的应用

    

与BigInteger一样,当浮点数的长度过大导致double无法表示时,就要使用BigDecimal类型来表示。

使用前需要导入java.math.BigDecimal包,支持各种常见的运算。

方法                参数类型          返回类型

BigDecimal     int                   BigDecimal

BigDecimal     String              BigDecimal

BigDecimal     double             BigDecimal

add                 BigDecimal      BigDecimal    

subtract          BigDecimal      BigDecimal    

multiply          BigDecimal      BigDecimal    

divide             BigDecimal      BigDecimal   

divideAndRemainder       BigDecimal      BigDecimal[]//取模操作,数组第1位是商,第2位是余数

toString                                  String

doubleValue                           double

floatValue                               float

intValue                                   int


另外对浮点数的位数有舍入需求时,可以调用setScale(int,BigDecimal.type)来选择保留小数点后几位以及舍入方式。

ROUND_UP:向上舍入,如1.51就会舍成1.6

ROUND_DOWN:向下舍入,如1.55会舍成1.5

ROUND_HALF_EVEN:四舍五入,如1.55会舍成1.6,1.54会舍成1.5,-1.55会舍成-1.56,-1.54会舍成-1.5。


BigDecimal类型的举例应用:

黄金分割数是一个非常重要的常数,有些场合需要极高的精度。斐波那契数列相邻的两个数相除即为黄金分割数,越往后越精确,我们可以尝试用第10000位和第10001位的数相除,结果保留1000位。代码如下:

public static BigDecimal GoldenMean(int i) {
  BigDecimal big1 = new BigDecimal(1);
  BigDecimal big2 = new BigDecimal(2);
  BigDecimal tmp;
  while(i!=0) {
   tmp = big2;
   big2 = big2.add(big1);
   big1 = tmp;
   i--;
  }
  return big1.divide(big2,1000,BigDecimal.ROUND_HALF_EVEN);
 }



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值