BigInteger和BigDecimal用法---附【解】黄金连分数

BigInteger类

BigInteger 类型的数字范围较 Integer 类型的数字范围要大得多。BigInteger 支持任意精度的整数,也就是说在运算中 BigInteger 类型可以准确地表示任何大小的整数值。

除了基本的加、减、乘、除操作之外,BigInteger 类还封装了很多操作,像求绝对值、相反数、最大公约数以及判断是否为质数等。

方法名称说明
add(BigInteger val)做加法运算
subtract(BigInteger val)做减法运算
multiply(BigInteger val)做乘法运算
divide(BigInteger val)做除法运算
remainder(BigInteger val)做取余数运算

BigDecimal 类

BigInteger 和 BigDecimal 都能实现大数字的运算,不同的是 BigDecimal 加入了小数的概念。一般的 float 和 double 类型数据只能用来做科学计算或工程计算,但由于在商业计算中要求数字精度比较高,所以要用到 BigDecimal 类。BigDecimal 类支持任何精度的浮点数,可以用来精确计算货币值。

BigDecimal 常用的构造方法如下。
BigDecimal(double val):实例化时将双精度型转换为 BigDecimal 类型。
BigDecimal(String val):实例化时将字符串形式转换为 BigDecimal 类型。

BigDecimal 类的方法可以用来做超大浮点数的运算,像加、减、乘和除等。在所有运算中,除法运算是最复杂的,因为在除不尽的情况下,末位小数的处理方式是需要考虑的。

BigDecimal add(BigDecimal augend)    // 加法操作
BigDecimal subtract(BigDecimal subtrahend)    // 减法操作
BigDecimal multiply(BigDecimal multiplieand)    // 乘法操作
BigDecimal divide(BigDecimal divisor,int scale,int roundingMode )    // 除法操作
模式名称说明
BigDecimal.ROUND_UP商的最后一位如果大于 0,则向前进位,正负数都如此
BigDecimal.ROUND_DOWN商的最后一位无论是什么数字都省略
BigDecimal.ROUND_CEILING商如果是正数,按照 ROUND_UP 模式处理;如果是负数,按照 ROUND_DOWN模式处理
BigDecimal.ROUND_FLOOR与 ROUND_CELING 模式相反,商如果是正数,按照 ROUND_DOWN 模式处理;如果是负数,按照 ROUND_UP 模式处理
BigDecimal.ROUND_HALF_ DOWN对商进行五舍六入操作。如果商最后一位小于等于 5,则做舍弃操作,否则对最后一位进行进位操作
BigDecimal.ROUND_HALF_UP对商进行四舍五入操作。如果商最后一位小于5,则做舍弃操作,否则对最后一位进行进位操作
BigDecimal.ROUND_HALF_EVEN如果商的倒数第二位是奇数,则按照 ROUND_HALF_UP 处理;如果是偶数,则按照 ROUND_HALF_DOWN 处理

黄金连分数解法(java)

public class Main(){
 public static void main(String[] args){
    BigInteger a = BigInteger.ONE;
    BigInteger b = BigInteger.ONE;
    for(int i=3;i<500;i++){
		BigInteger t =b;
		b=a.add(b);
		a=t;
}
BigDecimal bd = new BigDecimal(a,110).divide.(new BigDecimal(b,110),BigDecimal.ROUND_HALF_DOWN);
System.out.println(bd.toPlainString().subString(0,103));

}


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值