我正在除以2个BigInteger值
N = 94400567826854724487909837398348327858277687772498043028143080274141357168982328449151039212940544180753206250882172215623025263699414679367833398858755440423828380162368132951103946930488990027827989933432181959968836035369641054955336867327681756681532771354933952141599581827698618739724580124555641633861
e = 44598251142417535121365176389097472886004547620498587196637028250785621416609954924107228171779826812564450558386070863338405090708203920066925426522584172770629487602232360693706521107911895310319989921169318202224097739016252544913819802671755649536088117809831381940146419602124919706024152810967126830967我正在使用下面的代码来做到这一点
System.out.println(e.divide(N));它会打印0。divide方法有什么问题吗?
发布于 2012-11-07 21:04:20
您的e值小于您的N值,并且您正在执行整数运算,因此您将得到一个0值。
如果您想要非整数除法,请改用BigDecimal。
发布于 2012-11-07 21:06:16
你正在将一个数字x除以一个大约是2x的数字。这意味着结果将介于0和1之间。由于它是一个大整数,因此结果将是一个大整数,它将是0。
如果需要十进制值,请改用BigDecimal。
发布于 2012-11-07 21:05:54
您可能将它们按错误的顺序进行了划分,这对我来说很有效:
new BigInteger("94400567826854724487909837398348327858277687772498043028143080274141357168982328449151039212940544180753206250882172215623025263699414679367833398858755440423828380162368132951103946930488990027827989933432181959968836035369641054955336867327681756681532771354933952141599581827698618739724580124555641633861")
.divide(new BigInteger("44598251142417535121365176389097472886004547620498587196637028250785621416609954924107228171779826812564450558386070863338405090708203920066925426522584172770629487602232360693706521107911895310319989921169318202224097739016252544913819802671755649536088117809831381940146419602124919706024152810967126830967"))和收益..。2 (由于BigInteger仅用于整数值,因此取整为9/4 )。
https://stackoverflow.com/questions/13270348
复制相似问题