¿Por qué los números de punto flotante se imprimen de manera tan diferente?

Es un tipo de conocimiento común que (la mayoría) de los números de punto flotante no se almacenan con precisión (cuando se utiliza el formato IEEE-754). Así que uno no debería hacer esto:

0.3 - 0.2 === 0.1; // very wrong

... ya que resultará enfalse, a menos que se haya utilizado algún tipo / clase de precisión arbitraria específica (BigDecimal enJava/Rubí, BCMath en PHP,Matemáticas :: BigInt/Matemáticas :: BigFloat en Perl, por nombrar algunos) en su lugar.

Sin embargo, me pregunto por qué cuando uno intenta imprimir el resultado de esta expresión,0.3 - 0.2, lenguajes de script (Perl yPHP) dar0.1, pero los de "máquina virtual" (Java, JavaScript yErlang) da algo más parecido a0.09999999999999998 ¿en lugar?

¿Y por qué es también inconsistente en Ruby?versión 1.8.6 (teclado) da0.1, versión 1.9.3 (ideone) da0.0999...

Respuestas a la pregunta(5)

Su respuesta a la pregunta