Сначала вы делаете целочисленное деление, а затем ожидаете десятичное значение. В Java, 1234 / 10
приводит к 123
, а не 123.4
. Если вы хотите получить десятичный результат, сделайте одно из значений десятичным, то есть 1234.0 / 10
или 1234 / 10.0
. Это даст 123,4
Что касается вашей проблемы, поскольку число очень велико, лучше использовать BigDecimal (не BigInteger, поскольку он снова выполнит целочисленное деление, а вам нужен десятичный результат). Итак, попробуйте
BigDecimal b = new BigDecimal("1234567891234567891");
BigDecimal res = b.divide(new BigDecimal("100"));
Или вы можете сделать однострочную строку как
new BigDecimal("1234567891234567891").divide(new BigDecimal("100"))
Во-первых, res = 12345678912345678.91
, а другое также приведет к тому же. Примечание: хотя BigInteger и BigDecimal все включены в пакет java.math
, но если возникает ошибка, импортируйте ее, используя import java.math.BigDecimal;