0

我正在划分 2 个BigInteger

 N = 94400567826854724487909837398348327858277687772498043028143080274141357168982328449151039212940544180753206250882172215623025263699414679367833398858755440423828380162368132951103946930488990027827989933432181959968836035369641054955336867327681756681532771354933952141599581827698618739724580124555641633861

 e = 44598251142417535121365176389097472886004547620498587196637028250785621416609954924107228171779826812564450558386070863338405090708203920066925426522584172770629487602232360693706521107911895310319989921169318202224097739016252544913819802671755649536088117809831381940146419602124919706024152810967126830967

我正在使用此代码执行此操作

System.out.println(e.divide(N));

它打印出 0。divide 方法有问题吗?

4

3 回答 3

8

您的e值小于您的N值,并且您正在执行整数运算,因此您将获得 0 值。

如果您想要非整数除法,请BigDecimal改用。

于 2012-11-07T13:04:20.493 回答
2

您正在将数字 x 划分为大约 2x 的数字。这意味着结果将介于 0 和 1 之间。由于它是 Big Integer,因此结果将是 Big Integer,即 0。

如果您想要十进制值,请BigDecimal改用。

于 2012-11-07T13:06:15.760 回答
0

您可能以错误的顺序划分它们,这对我有用:

new BigInteger("94400567826854724487909837398348327858277687772498043028143080274141357168982328449151039212940544180753206250882172215623025263699414679367833398858755440423828380162368132951103946930488990027827989933432181959968836035369641054955336867327681756681532771354933952141599581827698618739724580124555641633861")
       .divide(new BigInteger("44598251142417535121365176389097472886004547620498587196637028250785621416609954924107228171779826812564450558386070863338405090708203920066925426522584172770629487602232360693706521107911895310319989921169318202224097739016252544913819802671755649536088117809831381940146419602124919706024152810967126830967"))

并产生... 2(四舍五入 9/4,因为BigInteger仅用于整数值)。

于 2012-11-07T13:05:53.590 回答