Как я уже упоминал в моем комментарии , 1.0665901062490447E-18
является очень небольшим значением. Если вам нужна такая большая точность, вы должны использовать BigDecimal
. Что-то вроде
double a = 1.0665901062490447E-18, b = 1.0;
System.out.println(BigDecimal.valueOf(a).add(BigDecimal.valueOf(b)).toPlainString());
Какие выходные данные
1.0000000000000000010665901062490447
Обратите внимание, что существует предопределенная константа BigDecimal.ONE
- поэтому вышеприведенное также можно записать
System.out.println(BigDecimal.valueOf(a).add(BigDecimal.ONE).toPlainString());