JAVA BigInteger和BigDecimal类常用方式

BigInteger

BigInteger是用来计算超大的整型数据的。

这个类计算出的所有数据只会是整型

    public static void main(String[] args) {
    	//两种创建方式
    	BigInteger ten = new BigInteger("10");
    	BigInteger two = new BigInteger("2");
    	BigInteger three = new BigInteger("3");
    	//只能创建某几个数
    	BigInteger one = BigInteger.TEN;
    	
    	BigInteger res;
    	//加法
    	res = ten.add(two);
    	//res =10+2=12
    	
    	//减法
    	res = ten.subtract(two);
    	//res = 10-2=8;
    	
    	//乘法
    	res = ten.multiply(two);
    	//res = 10*2=20;
    	
    	//除法
    	res = ten.divide(two);
    	// res = 10/2 =5 //小数向上取整
    	
    	//求余
    	res = ten.mod(three);
    	// res = 10%3 =1
    	
    	//最小值Min、最大值Max、就不演示了
    	
    	//求次方
    	res = ten.pow(3);
    	//res = 10*10*10//10的三次方
    }

BigDecimal

可以说是一个可以控制精确度的BigInteger

可以按照不同的方式去求精准度

使用不同的方式去求他的精度

BigDecimal small = new BigDecimal("1.1234567");
四舍五入方式
//small的精确到小数点5位
    	//ROUND_HALF_UP 这个参数代表以四舍五入的方式进行精确
    	res = small.setScale(5,BigDecimal.ROUND_HALF_UP);
    	//res = 1.12346
向下取精确度的方式(直接截断)
//ROUND_DOWN 向下取整、、直接截断第5位,不管后面是几
    	res = small.setScale(5,BigDecimal.ROUND_DOWN);
    	//res = 1.12345
向上取精确度的方式 ,,后面的一位只要有数就进位
//ROUND_UP 向上取整,比如精确到第3位,只要原来第三位后面有数,就默认进位
    	res = small.setScale(3,BigDecimal.ROUND_UP);
    	//res = 1.124
    	//不用进位
    	res = small.setScale(7,BigDecimal.ROUND_UP);
    	//res = 1.1234567

BIgDecimal的其他四则运算与BigIntegr一致

主要是除法

可以除尽的除法,运算没问题

        BigDecimal ten = new BigDecimal("15");
    	BigDecimal two = new BigDecimal("10");
    	
    	BigDecimal res = ten.divide(two);
    	//res = 1.5

如果遇见除不尽的,结果为无限小数一定要确定精确度

否则会报错

        BigDecimal ten = new BigDecimal("10");
    	BigDecimal three = new BigDecimal("3");
    	
    	//四舍五入保留3位小数
    	BigDecimal res = ten.divide(three,3,BigDecimal.ROUND_HALF_UP);
    	System.out.println(res);

另外需要注意的

        double ten =10.123;
    	BigDecimal t = new BigDecimal(ten);
    	System.out.println(t);

结果不是10.123

而是。10.1229999999999993320898283855058252811431884765625

因为,double类型在java内存中存储的就是这样的,只是我们平时看不出来

,转换成BigDecimal时把他的原型转换了出来。

需要注意........想要原来的值可以先转换成String

double ten =10.123;
    	BigDecimal t = new BigDecimal(String.valueOf(ten));
    	System.out.println(t);

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: BigInteger转换为BigDecimal可以通过BigDecimal的构造函数来实现,将BigInteger作为参数传递给BigDecimal构造函数即可。 例如: BigInteger bigInteger = new BigInteger("12345678901234567890"); BigDecimal bigDecimal = new BigDecimal(bigInteger); 这样就将BigInteger型的bigInteger转换为了BigDecimal型的bigDecimal。 ### 回答2: BigIntegerBigDecimal都是Java中处理大数的BigInteger表示不可变的任意精度整数,而BigDecimal表示不可变的任意精度十进制数。 要将BigInteger转换为BigDecimal,可以使用BigDecimal的构造方法来完成转换。BigDecimal的构造方法接受一个BigInteger型的参数,可以直接将BigInteger转换为相应的BigDecimal对象。 以下是将BigInteger对象转换为BigDecimal对象的示例代码: ```java BigInteger bigInteger = new BigInteger("1234567890"); BigDecimal bigDecimal = new BigDecimal(bigInteger); ``` 上述代码中,首先创建了一个BigInteger对象bigInteger,其值为"1234567890"。然后使用BigDecimal的构造方法将bigInteger转换为相应的BigDecimal对象bigDecimal。 通过以上代码,我们成功将BigInteger对象转换为BigDecimal对象。这样就可以继续使用BigDecimal提供的各种方法进行高精度的数值计算。 需要注意的是,由于BigDecimal表示的是十进制数,而BigInteger表示的是整数,所以在转换时可能会导致精度的损失或受到舍入模式的影响。因此,在进行大数计算时,需要根据具体的需求选择合适的转换方式和精度控制。 ### 回答3: 在Java中,BigIntegerBigDecimal是数字处理中非常常用的两个BigInteger用于处理任意长度的整数,而BigDecimal用于处理任意精度的小数。 要将BigInteger转换为BigDecimal,可以使用BigDecimal的构造函数。BigDecimal有一个可以接受BigInteger值的构造函数,这样可以将BigInteger的值转换为BigDecimal。 以下是一个简单的示例代码,演示如何将BigInteger转换为BigDecimal: ```java import java.math.BigDecimal; import java.math.BigInteger; public class BigIntegerToBigDecimal { public static void main(String[] args) { BigInteger bigInteger = new BigInteger("1234567890"); BigDecimal bigDecimal = new BigDecimal(bigInteger); System.out.println("BigInteger: " + bigInteger); System.out.println("BigDecimal: " + bigDecimal); } } ``` 在上述示例中,我们首先创建了一个BigInteger对象(bigInteger),并将其初始化为1234567890。然后,我们使用BigDecimal的构造函数将bigInteger转换为BigDecimal(bigDecimal)。最后,我们将bigIntegerbigDecimal的值输出到控制台上。 输出结果: BigInteger: 1234567890 BigDecimal: 1234567890 通过这种方式,我们可以将BigInteger转换为BigDecimal,用于处理高精度的小数计算。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SUNbrightness

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值