Это потому, что десятичные значения не могут быть представлены точно с плавающей точкой или двойными.
Одно предложение: избегайте поплавков и удваивайте, когда требуются точные ответы. Вместо этого используйте BigDecimal, int или long
Использование int:
public class SampleDemo {
public static void main(String args[]) {
System.out.println(10 - 9);
}
}
// Output : 1
Использование BigDecimal:
import java.math.BigDecimal;
public class SampleDemo {
public static void main(String args[]) {
System.out.println(new BigDecimal("10.00").subtract(new BigDecimal("9.10")));
}
}
// Output : 0.90