Si lo hace los cálculos a mano en binario de doble precisión, que se limita a 53 bits significativos, verá lo que está pasando:
129,95 = 1,0000001111100110011001100110011001100110011001100110 x 2^7
129,95 * 100 = 1.1001011000010111111111111111111111111111111111111111011 x 2^13
Esto es 56 bits significativos de largo, de modo redondeado a 53 bits que es
1,10010110000101111111111111111111111111111111111111 11 x 2^13, que es igual
12994,999999999998181010596454143524169921875
Ahora 129,95 * 10 = 1.01000100110111111111111111111111111111111111111111111 x 2^10
Este es de 54 bits significativos de largo, de modo redondeado a 53 bits Es 1,01000100111 x 2^10 = 1299,5
Ahora 1.299,5 * 10 = 1.1001011000011 x 2^13 = 12995.
Lo más probable debido a la representación binaria de los números de punto flotante. No se puede escribir exctamente 129.95 en la base 2, supongo. –
Enlace obligatorio: [Lo que todo científico informático debe saber sobre la aritmética de coma flotante] (http://docs.sun.com/source/806-3568/ncg_goldberg.html) –
Cualquier pista sobre por qué esto NO estaría sucediendo para ¿yo? Intento demostrar esto, y entro en 129.95 * 100 como arriba en IRB e inesperadamente recibo la respuesta correcta. – Joel