Saltar al contenido

Comparación de números de punto flotante de Python

Hola, encontramos la solución a lo que andabas buscando, deslízate y la obtendrás aquí.

Solución:

Esto podría ser esclarecedor:

>>> float.hex(2.2 * 3.0)
'0x1.a666666666667p+2'
>>> float.hex(3.3 * 2.0)
'0x1.a666666666666p+2'
>>> float.hex(6.6)
'0x1.a666666666666p+2'

Aunque todos se muestran en decimal como 6.6cuando inspecciona la representación interna, dos de ellos están representados de la misma manera, mientras que uno de ellos no lo está.

Para completar la buena respuesta de Amadan, aquí hay una forma más obvia de ver que 2.2*3. y 3,3*2. no están representados por el mismo flotador: en un shell de Python,

>>> 2.2 * 3.
6.6000000000000005
>>> 3.3 * 2.
6.6

De hecho, el shell de Python muestra el representación de números, que por definición debería permitir que el flotante correspondiente se construya correctamente a partir de la representación, por lo que verá la aproximación numérica de 2.2*3 que hace Python. El hecho de que 2.2*3. != 3,3*2. es obvio al ver todos los dígitos necesarios, como arriba.

Puntuaciones y reseñas

Acuérdate de que tienes la capacidad de aclarar .

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *