En la versión Python3.3, 1.2*2=2.4, y el resultado de 1.2*3 es 3.59999999999999996
La razón fundamental es que la forma de los datos procesados internamente por el ordenador es binaria.
Por ejemplo
1/10, base diez: 1*10^(-1); base dos: 0.00011001100..., que es un infinito en forma ¡Decimales repetidos!
Sin embargo, la precisión de corte predeterminada de la computadora para números de punto flotante es de 17 dígitos. El número decimal preciso original se guardará como un número binario estimado y, cuando se muestre a los humanos, se convertirá en un decimal estimado. número. .
Vale la pena señalar que cuando Python muestra números a las personas, llama a repr(). La función de esta función es convertir los números en forma de cadena. Por supuesto, en este momento, la computadora ya lo ha procesado. Números de coma flotante. Se ha realizado un procesamiento aproximado (puede entenderlo temporalmente como redondeo).
En versiones anteriores de Python, si ingresa x = 0.1, se devolverá x = 1.00000000000000001. El principio es el mismo, pero la versión actual obtendrá directamente 0.1. Debería ser que Python haya optimizado la visualización. .
Si comprende lo anterior, sabrá la razón por la cual 1.2*3=3.5999999999999996
Puede consultar el video del curso abierto MIT NetEase---Introducción a la informática y la programación. ¡Esto se menciona en el episodio 5!