Мне нужно выполнить некоторые точные вычисления с большими числами, и я пытался с Scala BigDecimal
, но я заметил потерю точности.
В качестве примера:
2^63 == 9223372036854775808
2^64 == 18446744073709551616
Однако, когда я делаю
println(BigDecimal.decimal(scala.math.pow(2, 63)).toBigIntExact())
println(BigDecimal.decimal(scala.math.pow(2, 64)).toBigIntExact())
, я получаю
9223372036854776000 != 9223372036854775808
18446744073709552000 != 18446744073709551616
Я не знаю, если я можно получить точную BigInt
.
Может быть, мне нужно использовать другой подход.
Может ли кто-нибудь помочь мне решить эту проблему?