首页 > 编程知识 正文

string转biginteger,bigdecimal转换成integer

时间:2023-05-04 01:47:57 阅读:50857 作者:3836

BigInteger通过将数字存储在整数数组中来存储许多数字

如果只使用一个整数数组,如何表示整数的正负呢?

中,需要另一个成员变量来指示该数的正负。

18927348*(10^9) 2347389543*(10^9) 834934878,最终从整体上看mag序列保存了10^9进制数。

1、以前数字存在于字符串中,大多数之间的四则运算和其他运算都是按排列进行的;

2、JDK的实现,这就是BigInteger;

3、BigInteger实现的接口:可序列化、可比较

4、signum属性为了区分正负数和0的标志位,整数用1表示,负数用-1表示,书口用0表示

5、mag是magnitude的缩写,mag数组存储BigInteger的数值大小

big-endian顺序,即,高位字节依次排列在低位地址,低位字节依次排列在高位地址的方式

little-endian正好相反

构建方法1

publicbiginteger(byte[]val ) {

if(val.length==0) ) ) )。

thrownewnumberformatexception (zerolengthbiginteger );

if(val[0]0) {

mag=makepositive(val; //此函数的作用是将负数的字节数组转换为正值。

signum=-1; //如果数组的第一个值为负数,则将数组存储在mag中,并将-1赋值给signum

} else {

mag=stripleadingzerobytes(val; 如果不是//负,则可以直接去除前面的无效零,并将其分配给mag

signum=(mag.length==0? 0 : 1;

}

}

构建方法2 :直接从字符串到BigInteger

publicstaticvoidmain (字符串[ ] args ) {

bigintegerbiginteger=newbiginteger (1234567899876543211234567898765678987654312345678987656789878987654321 );

system.out.println(biginteger );

}

.

//实现,10表示十进制

publicbiginteger (字符串val ) {

this(val,10 );

}

在java中,int表示-2^31至2^31-1,即- 2147483648至2147483647

一个int值最多可以存储10位十进制整数,存在溢出,最好存储9位

jdk将18927348347389543834934878分为18927348 | 347389543 | 834934878进行保存

保存mag[0]为18927348,mag[1]为347389543,mag[2]为834934878

6、BigInteger是不变的任意精度的整数

7、用二进制补数的形式表示BigInteger (例如Java的基本整数型)

8、BigInteger提供所有Java基本整数算子的对应物

9、并给出java.lang.Math的所有相关方法

10、将mag序列转换为原始数列的方法

继续除法运算,取馀数

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。