2 votos

destacar la precisión del cálculo matemático 0 = 1E-29?

¿Alguna idea de por qué si se escribe en la búsqueda de spotlight, la primera fórmula da como resultado 1E-29, mientras que la segunda fórmula da como resultado 0?

¿Se puede explicar paso a paso por qué existe este fallo?

Está claro que este cálculo se realiza con aritmética de punto flotante, aunque creo que como no hay "punto flotante" per-se en este cálculo, la desigualdad es un error, y no un resultado de las limitaciones de la aritmética de punto flotante. Mi intuición me dice que esto podría hacerse sólo con aritmética de enteros, ya que no hay valor negativo ni punto decimal.

Para que quede claro, no me fío de mi intuición, y me alegra que me digan que está equivocada, si es que es así. Sólo estoy interesado en la anomalía específica que lleva a esta inexactitud.

(1024*64) - (2^16) = 1E-29

(1024*128) - (2^17) = 0

1E-29 0

0 votos

¿Lo has comprobado con tu calculadora?

0 votos

La calculadora funciona correctamente

2voto

Oskar Puntos 1242

Claramente es un error si crees que las matemáticas exactas deberían coincidir. Probablemente también es una característica, ya que la biblioteca matemática elegida fue probablemente elegida para ser rápida y pequeña para las matemáticas que necesita hacer y no la precisión científica para calcular un alunizaje.

Este tipo de errores de redondeo sucede todo el tiempo, especialmente si eres descuidado o no implementar un dígito de guardia para "números pequeños" como 65 mil. Todas las bibliotecas matemáticas hacen aproximaciones cuando codifican valores, por lo que los bits a veces importan cuando se comprueba algo que está muy cerca de cero. En tu ejemplo los dos números grandes no están perfectamente representados y obtienes un error de redondeo muy insignificante que no se cancela perfectamente cuando la resta ocurre en un caso pero no en el otro. El 1e-29 debería ser redondeado a cero, a menos que el objetivo sea introducir a la gente en este concepto.

Cuando necesite ser preciso, utilice PCalc u otra calculadora que maneje correctamente la precisión y el redondeo.

Además, si se toma 1E-29 del peso de la tierra, eso es algo menos de 60 mg. Si se estimara la masa de la tierra, se estaría de más de un copo de nieve y menos de un grano de arena. Esto es, literalmente, el proverbial "hacer una montaña de un grano de arena".

Dicho esto, si te gustan las matemáticas o los ordenadores, esto es muy chulo, ya que expone la representación interna de un número y ves cómo una aproximación puede provocar errores de redondeo para números no muy grandes en este caso. Hay libros legendarios (al menos para los ingenieros y programadores) dedicados a las recetas numéricas y trucos para hacer cálculos rápidos y precisos cuando no llevas una biblioteca matemática perfecta.

1 votos

+1 por recomendación de PCalc

0 votos

Estoy vagamente familiarizado con los errores/limitaciones de redondeo de punto flotante, pero asumí que no se aplica en esta situación porque 1 - esto no es un cálculo de punto flotante, y 2 - el valor/cálculo más grande resulta en cero correctamente, debe haber algo más en el valor/cálculo más pequeño. Voy a leer un poco.

0 votos

No se trata de un error, sino de la forma en que funciona el punto flotante. stackoverflow.com/tags/floating-point/info

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X