Hola Alex espero que estes bien!
El resultado de 0.2 + 0.1 en Java y en muchos otros lenguajes de programación es 0.30000000000000004. Este comportamiento se debe a que los números de punto flotante, como los double, se almacenan en la memoria de la computadora como una representación binaria de fracciones, lo que puede resultar en algunas imprecisiones.
En términos simples, la computadora no puede representar todas las fracciones de manera exacta en binario, por lo que algunas fracciones, como 0.1, se representan como una serie infinita de dígitos binarios. Al sumar dos números con representaciones binarias que tienen una parte fraccionaria infinita, se pueden producir pequeñas imprecisiones debido a las limitaciones de la representación de punto flotante en la computadora.
Para evitar este problema, se pueden utilizar clases como BigDecimal que permiten manejar números con una precisión arbitraria y realizar operaciones matemáticas con una precisión exacta.
Te invito a hacer el test usando el BigDecimal y comparar los resultados :)
¡Un saludo!