error de número flotante con una resta simpleNo puedo decir si JMP puede restar dos números simples correctamente pero probé los siguientes números:
16.11-15.12
0.99 (ok, hasta ahora todo bien)
15.29-15.18
0.109999999999999 (ya no es tan bueno)
15.29-15.19
0.0999999999999997 (¿un siete?)
Entonces, ¿dónde está mal el gancho?
Esto sucede con JMP 12.2.0 (64 bits) en el editor de scripts.
Re: error de número flotante con una resta simpleTerminé usando
format(mean(y),6)
por lo que en el informe, un número muy pequeño se convierte en 1.574e-6 y no ocupa mucho espacio.
pero
Format( 1.2345, "Precision", 3)
Sería el camino para "dígitos significativos".
Re: error de número flotante con una resta simpleCon respecto a los "dígitos significativos", puede obtener eso utilizando el formato "Precisión" con la función "Formato". Además, la función "Char" admite dos argumentos de suma, uno para el ancho y otro para el número de posiciones decimales, si solo desea omitir la operación de la Ronda para su visualización.
Char( 15.29 - 15.19, 10, 2); // "0.10"
Format( 12.345, "Precision", 3); // "12.3"
Format( 1.2345, "Precision", 3); // "1.23"
Con respecto al problema original, se reduce al hecho de que las computadoras almacenan números en la base 2 (binario) pero los muestran en la base 10, y algunos números de base 10 como "0.1" no tienen una representación exacta en la base 2.
Re: error de número flotante con una resta simpleNo estoy seguro de lo que estás preguntando. Si está preguntando si estas funciones tienen la opción de especificar dígitos significativos, así como el número de lugares decimales, entonces la respuesta es no. Si está preguntando si consideraría agregar una opción de este tipo, entonces esa solicitud es un asunto de desarrollo de JMP.
Re: error de número flotante con una resta simpleTHX para las entradas, pequeña pregunta, ¿considera una opción como "n dígitos significativos" para show, char y round? Eso ayudaría mucho.
Re: error de número flotante con una resta simpleSolo para ilustrar el problema NO es un problema de JMP, esto es lo que sucede en Excel.
| X |
Y |
Fórmula X - Y |
| 16.11 |
15.12 |
0.99000000000000000 |
| 15.29 |
15.18 |
0.10999999999999900 |
| 15.29 |
15.19 |
0.09999999999999960 |
Re: error de número flotante con una resta simpleEntiendo. Mi ejemplo con la función Round () solo pretendía ilustrar un método para tratar con la precisión limitada del número de punto flotante y la aritmética asociada. Puede crear soluciones más ricas para manejar casos más complejos.
Usaste Ayuda > Libros > Guia de Scripting o Ayuda > Índice de Scripting ¿Para ver las capacidades de las funciones Round () o Char ()?
Re: error de número flotante con una resta simpleEs posible que desee leer este recurso: JMP precisión numérica Puede encontrar dichos documentos para otros programas populares como las hojas de cálculo. Es un problema conocido, pero generalmente no es un problema.
Re: error de número flotante con una resta simpleno está tranquilo, para "extender" un poco (y la razón por la que me está molestando) es que la cantidad de precisión depende de la opinión del usuario
Si usa 15.29 mm y 15.19 mm, obtendrá el 0.1 mm correcto con la ronda (x, 2).
Si usa 0.01529 my 0.01519 m obtendrá 0 m y probablemente se quedará en mi puerta el segundo después de que vea el resultado * g *
Y no puedo ver si los "dígitos significativos" son compatibles como round o char.
Re: error de número flotante con una resta simpleEn matemáticas La aritmética simple daría resultados exactos en estas diferencias: 15.29 - 15.18 = 0.11 y 15.29 - 15. 19 = 0,10. Pero el resultado en JMP es aritmética de precisión finita en una computadora El resultado depende de cómo se representa el número real como un número de punto flotante y cómo funcionan los operadores aritméticos. Con esta representación. No es difícil encontrar casos en los que el resultado del operador y el resultado matemático no coincidan.
JMP puede usar una biblioteca de software numérica de punto flotante estándar o un procesador de punto flotante de hardware dedicado para tales operaciones.
Hay algunos softwares que usan precisión extendida o 'ilimitada' (limitada solo por recursos físicos) pero generalmente no cambia los resultados prácticos en nuestros métodos estadísticos, como la regresión.
Una solución en su caso es redondear el resultado en una fórmula o script:
Round( 15.2900000 - 15.1900000, 2 )
Entonces obtienes 0.1 para el resultado. Problema resuelto.