Descubrí que 9 * 0.0001 = 0.0009000000000000001 , pero 9 / 10_000 = 0.0009
¿Está garantizado que cuando divide por potencia de 10 recibirá el valor exacto (según IEEE 754-2019: estándar IEEE para aritmética de coma flotante)
Espero que alguien que conozca el comportamiento específico del estándar de punto flotante explique si existen tales garantías o no.
0,009 no se puede representar con precisión mediante el punto flotante IEEE 754. La representación binaria de 0.009 sería:
0.0000001001001101110100101111000110101001111110111110011101101100100010110100001110010101100000010000011 0001001001101110100101111000110101001111110111110011101101100100010110100001110010101100000010000011 ...Es un número racional con un número infinito de dígitos (binarios) después del punto decimal.
Entonces, esto no se puede representar en coma flotante, que solo tiene un número finito de dígitos binarios disponibles en la parte de la mantisa.
0,009 en punto flotante se representa de la siguiente manera:
sign exponent mantissa 0 01111000 00100110111010010111100Pero como la secuencia binaria es finita aquí, en realidad representa este número:
0.0089999996125698089599609375....
Una desviación similar ocurrirá para otras potencias positivas de 10 en 9/10 n
Puede realizar la conversión utilizando esta herramienta .