Pregunta

  

Duplicar posible:
   Python flotador - str - float rareza

En Python, 2/5.0 o 2/float(5) rendimientos 0.40000000000000002

¿Por qué aparece ese error al final y cómo puedo obtener el valor correcto a utilizar en los cálculos adicionales?

¿Fue útil?

Solución

Bienvenido a IEEE754, disfrutar de su estancia .

decimal lugar.

Otros consejos

Debido a la aritmética de punto flotante no es exacta. Debe utilizar este valor en sus cálculos adicionales, y redondear el resultado cuando haya terminado. Si lo necesita, para ser exactos, utilice otro tipo de datos.

Ignacio anteriormente tiene la respuesta correcta.

No son estándares IEEE para almacenar de manera eficiente los números de punto flotante en las computadoras binarias. Estos van en absoluto detalle sobre exactamente cómo se almacenan los números y estas reglas se siguen en casi todos los ordenadores.

También están equivocados. Los números binarios no pueden manejar la mayoría de los números normales, sólo potencias de dos. En lugar de hacer algo complicado que requiere recálculo de los bits inferiores a redondeo u otros trucos, las normas eligen eficiencia.

De esta manera, se puede maldecir a su sistema que se ejecuta un poco más rápido. Hay debates ocasionales sobre el cambio del pitón de alguna manera para evitar estos problemas, pero las respuestas no son triviales y sin una gran pérdida de eficiencia.

Moverse por esto:

Una de las opciones está cavando en el paquete "decimal" de la biblioteca estándar. Si usted se pega a los ejemplos y hacer caso omiso de la página de largo, que le conseguirá lo que quiere. No hay apuestas en la eficiencia.

En segundo lugar es para hacer un redondeo manual y cadena truncan a sí mismo en una función de salida. A quién le importa si el número es de un pedacito si nunca imprimir esos bits?

Tenga en cuenta que Python 3.1 tiene una nueva función de formato de coma flotante que evita este tipo de apariencia. Ver ¿Qué hay de nuevo en Python 3.1 para más detalles (búsqueda de "punto flotante" ).

esta pregunta para la explicación. La forma correcta sería la de cualquiera

  1. Use números enteros hasta el cálculo "final"
  2. Vivo con errores de redondeo.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top