Я пишу программу, в которой мне нужно многократно умножать два BigDecimal
.
После 27-й итерации я получаю:
0.905225895893387921845435055445776361046057346344145563957027726
Любые дальнейшие вычисления с использованием этого числа (BigDecimal * 0.182365681285)
приводят к появлению нулей в конце. Итак, следующая итерация возвращает: 0.905225895893387921845435055445776361046057346344145563957027726000000000000
Итерация после этого возвращает: 0.905225895893387921845435055445776361046057346344145563957027726000000000000000000000000
так далее..
Поэтому мне было интересно, было ли это связано с какой-то проблемой точности с BigDecimal
.
Любая помощь приветствуется
Изменить: меня попросили опубликовать мой код. Я мог бы скопировать и вставить несколько страниц, которые у меня есть, но это очень точное представление того, что у меня есть на данный момент:
BigDecimal range = new BigDecimal(0.0012440624293146346);
for(int i = 0; i < 50 ; i++){
low = low.multiply(range);
}
double
(двойникам не хватает точности) - вместо этого используйте конструкторString
. - person assylias   schedule 17.03.2013