0

私は2つBigIntegerの値を割っています

 N = 94400567826854724487909837398348327858277687772498043028143080274141357168982328449151039212940544180753206250882172215623025263699414679367833398858755440423828380162368132951103946930488990027827989933432181959968836035369641054955336867327681756681532771354933952141599581827698618739724580124555641633861

 e = 44598251142417535121365176389097472886004547620498587196637028250785621416609954924107228171779826812564450558386070863338405090708203920066925426522584172770629487602232360693706521107911895310319989921169318202224097739016252544913819802671755649536088117809831381940146419602124919706024152810967126830967

私はそうするためにこのコードを使用しています

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

そしてそれは0を出力します。除算方法に何か問題がありますか?

4

3 に答える 3

8

eは値よりも小さく、N整数演算を実行しているため、値は0になります。

非整数除算が必要な場合は、BigDecimal代わりに使用してください。

于 2012-11-07T13:04:20.493 に答える
2

数値xを約2xの数値に分割しています。つまり、結果は0から1の間になります。これはBig Integerであるため、結果はBig Integerになり、これは0になります。

10進値が必要な場合は、BigDecimal代わりに使用してください。

于 2012-11-07T13:06:15.760 に答える
0

あなたはおそらくそれらを間違った順序で分割しています、これは私にとってはうまくいきます:

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

およびyields... (整数値にのみ使用されるため、 9/4に2丸められます)。BigInteger

于 2012-11-07T13:05:53.590 に答える