標題說明了一切:如何在Java中將浮點數除以BigInteger
?我不需要部門的小數部分,它可以是舍入或截斷(但我會感興趣哪一個適用)。如何通過Java中的double來劃分BigInteger?
的「明顯的」甚至不編譯:
BigInteger x = BigInteger.valueOf(73).pow(42);
BigInteger y = x.divide(Math.PI); // The method divide(BigInteger) in the type BigInteger is
// not applicable for the arguments (double)
System.out.println(y);
我預計中的一種:
BigInteger y = new BigDecimal(x).divide(BigDecimal.valueOf(Math.PI)).toBigInteger();
不幸,它提供了一個ArithmeticException
:非十進制擴展;沒有確切的可表示的小數結果。這是π,當然真正的...
當然,這一個工程,但它是太慢...
BigInteger y = BigInteger.valueOf(-1);
BigDecimal σ = BigDecimal.ZERO;
while(σ.compareTo(new BigDecimal(x)) < 0) {
y = y.add(BigInteger.ONE);
σ = σ.add(BigDecimal.valueOf(Math.PI));
}
什麼是正確的,規範的方法?
https://stackoverflow.com/questions/10637232/how-can-i-divide-properly-using-bigdecimal – Reimeus