如何在Java中把BigInteger转换为BigDecimal或BigDecimal转换为BigInteger|附实例

1,157 阅读2分钟

在这篇博文中,我们将通过实例来学习如何将BigInteger转换为BigDecimal

BigInteger和BigDecimal的例子

整数、长数和双数是基本的数字类型,用于存储有限范围内的数值,以进行基本的算术运算。BigInteger用于存储大的数值。BigDecimal用于存储正确的精度和四舍五入的数字,在金融应用中精度是很重要的。BigIntegerBigDecimal是java.math包中的类。

你也可以查看我以前关于java中BigInteger类的文章。

如何在java中把BigInteger转换为BigDecimal?

我们有两种方法可以将BigInteger转换为BigDecimal。

使用BigDecimal构造函数

BigDecimal有一个构造函数,接受BigInteger值并返回bigDecimal值 BigDecimal(BigInteger unscaled value) 零刻度的BigDecimal(BigInteger unscaled value, int scaledValue) 转换为带刻度的bigdeimal,如果给定的刻度为负数,则会产生NumberFormatException。

BigInteger biginteger = new BigInteger("4785961234");  
BigDecimal bd = new BigDecimal(biginteger);  
System.out.println(bd);  
BigInteger biginteger1 = new BigInteger("78459789");  
BigDecimal bd1 = new BigDecimal(biginteger1,2);  
System.out.println(bd1);  

输出

4785961234
784597.89

使用BigDecimal.valueOf方法

这将转换为BigDecimal。唯一的限制是,如果bigintger包含一个更大的数字,如下图所示,它将给出一个错误的数字作为intValue使用,你可以在valueOf方法中使用BigInteger的intValue或longValue。

BigInteger bi = new BigInteger("789456");  
BigDecimal bd = BigDecimal.valueOf(bi.longValue());  
System.out.println(bd);  
BigInteger bi1 = new BigInteger("78945612312312312312312");  
BigDecimal bd1 = BigDecimal.valueOf(bi1.longValue());  
System.out.println(bd1);  

输出

789456  
-6452323164568604168  

如何在java中把BigDecimal转换为BigInteger?

当我们将BigDecimal转换为BigInteger时,bigdecimal的精度将被丢弃,并使用toBigInteger()方法返回Biginteger形式的双数/长数值 BigDecimal提供了toBigInteger()方法--这将转换为BigInteger。

BigDecimal bigDecimal = new BigDecimal("457695216.89566");  
BigInteger bigInteger=bigDecimal.toBigInteger();  
System.out.println(bigInteger);  

希望你能理解java中Biginteger和BIgDecimal的转换。