Lo que todo programador debería saber sobre aritmética de punto flotante
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Corrección de errores tipográficos

Felipe 377915eb 01ea3f13

+6 -6
+3 -3
content/errors/comparison.html
··· 30 30 números muy diferentes. Y cuando los números son muy grandes, el epsilon 31 31 puede acabar siendo más pequeño que el mínimo error de redondeo, por lo que 32 32 la comparación siempre devolvería «falso». Por tanto, es necesario ver si 33 - el *error relativo* es menor epsilon: 33 + el *error relativo* es menor a epsilon: 34 34 35 35 if(Math.abs((a-b)/b) < 0.00001) // ¡Todavía no es correcto! 36 36 ··· 72 72 Hay algunos casos en los que el método de arriba todavía produce resultados inesperados 73 73 (concretamente, es mucho más estricto cuando un valor es casi cero que cuando es 74 74 exactamente cero), y algunas de esas pruebas para las que fue desarrollado probablemente 75 - especifica un comportamiento que no es apropiado para algunas aplicaciones. ¡Antes de 76 - usarlo, asegúrate de que es adecuado para tu aplicación! 75 + especifica un comportamiento que no es apropiado para algunas aplicaciones. Antes de 76 + usarlo, ¡asegúrate de que es adecuado para tu aplicación! 77 77 78 78 Comparando valores de punto flotante como enteros 79 79 -------------------------------------------------
+1 -1
content/formats/integer.html
··· 15 15 16 16 * Supone más trabajo (y más oportunidades de introducir bugs) hacerlo bien, especialmente en lo que concierne a los [métodos de redondeo](/errors/rounding/). 17 17 * Los enteros tienen precisión completa, pero en un rango muy limitado, y cuando se desbordan, normalmente «dan la vuelta» silenciosamente: el mayor entero más 1 da cero (para enteros sin signo) o el valor negativo más grande en valor absoluto (para enteros con signo). Este es el peor comportamiento posible cuando se trabaja con dinero por razones obvias. 18 - * El punto decimal implícito es defícil de cambiar y enormemente inflexible: si almacenas los dólares como céntimos, es simplemente imposible soportar el [dinar bareiní](http://es.wikipedia.org/wiki/Dinar_barein%C3%AD)(1 dinar = 1000 fils) al mismo tiempo. Tendrías que almacenar la posición del punto decimal con los datos - el primer paso para implementar tu propio formato de [punto flotante](/formats/fp/) decimal de precisión limitada (lleno de fallos y no estándar). 18 + * El punto decimal implícito es difícil de cambiar y enormemente inflexible: si almacenas los dólares como céntimos, es simplemente imposible soportar el [dinar bareiní](http://es.wikipedia.org/wiki/Dinar_barein%C3%AD)(1 dinar = 1000 fils) al mismo tiempo. Tendrías que almacenar la posición del punto decimal con los datos - el primer paso para implementar tu propio formato de [punto flotante](/formats/fp/) decimal de precisión limitada (lleno de fallos y no estándar). 19 19 20 20 Resumen: **no se recomienda usar enteros**. Haz esto solamente si no hay otra [alternativa mejor](/formats/exact/).
+2 -2
content/languages/python.html
··· 14 14 Tipos decimales 15 15 --------------- 16 16 17 - Python tiene un tipo de [precision arbitraria](/formats/exact/) decimal llamado 17 + Python tiene un tipo de [precisión arbitraria](/formats/exact/) decimal llamado 18 18 `Decimal` en el módulo `decimal`, que también permite elegir el [método de 19 19 redondeo](/errors/rounding/). 20 20 ··· 40 40 print("{:.2f}".format(1.2399)) 41 41 42 42 [Métodos de redondeo](/errors/rounding/) específicos y otros parámetros se pueden 43 - definir enun objeto `Context`: 43 + definir en un objeto `Context`: 44 44 45 45 getcontext().prec = 7 46 46