¿Qué debo hacer si los datos calculados en Excel son inconsistentes?
El siguiente es un extracto del foro de excelhome y una introducción detallada de Master Gray:
Es posible que muchas personas no noten el problema de los errores de cálculo decimal de punto flotante cuando usan Excel a diario. base
Debido a que los resultados de cálculo utilizados diariamente son definitivamente resultados redondeados, el impacto de los errores de punto flotante se puede eliminar
Sin embargo, también ocurren errores de cálculo decimal de punto flotante.
Sin embargo, también pueden producirse errores decimales de coma flotante durante la operación, lo que puede provocar errores en el resultado final.
Por ejemplo, estadísticas simples como countif(A1:A10000, "=B1") también pueden ser incorrectas.
El archivo adjunto genera aleatoriamente 50.000 decimales (redondeados a 2 decimales), luego suma y resta inmediatamente los mismos números enteros
Compara si los valores antes y después del cálculo son iguales ( Desde un punto de vista matemático, ciertamente son iguales, pero el resultado del cálculo por computadora no lo es necesariamente.
Este complemento identificará automáticamente algunos cálculos que fallarán en su computadora debido a errores de punto flotante.
El motivo de los errores decimales de punto flotante es simple: el número de decimales es infinito
Incluso si es un decimal, sus dígitos son infinitos, como 1/3 en decimal o 0. 1 en binario (binario)
Por lo tanto, una computadora que almacena decimales solo debe poder almacenar un subconjunto de todos los decimales, y un número infinito de decimales debe truncarse
Por lo tanto, un solo decimal solo se puede usar como valores aproximados, no como valores precisos
Y las operaciones de punto flotante correspondientes solo se pueden usar como valores aproximados, no como valores precisos
Diferentes CPU, como Intel y AMD, o Pentium y Celeron, tienen diferentes cortes de hardware
Por lo tanto, la misma operación puede tener diferentes resultados en diferentes máquinas
Por lo tanto, la misma operación puede tener diferentes resultados en diferentes máquinas puede tener diferentes resultados
Por lo tanto, la misma operación puede tener diferentes resultados en diferentes máquinas
La misma operación puede tener diferentes resultados en diferentes máquinas El resultado
Esta es también la razón por la que algunas personas en el foro suelen decir que el cálculo XX es incorrecto, y luego las personas que responden dicen que no hay ningún problema con mi máquina, pero que en realidad es solo una CPU diferente
Otro Por otro lado, las operaciones internas de diferentes software pueden implementarse utilizando diferentes hardware de CPU con diferentes tipos de datos, o la configuración de precisión puede ser diferente.
Por lo tanto, la misma operación también puede funcionar en diferentes software.
Tenga cuidado al programar y escribir fórmulas, suponiendo que xey son números de punto flotante, er. . . . . Cada celda decimal en Excel es un número de coma flotante
Nunca escribas una oración como si x=y, porque es posible que x e y, que son iguales en matemáticas, no lo sean en la computadora p>
Deberías escribir if |x-y| / max(|x|, |y|) lt;= 0.0000000000001 etc.
O incluso más simple, usa if round(x) = round( y ), de modo que el error de almacenamiento de punto flotante de cola del último bit no afecte el valor completo.
Afortunadamente, los números enteros y los decimales de punto fijo no se ven afectados, por lo que se deben preferir los tipos de decimales enteros y de punto fijo al programar.
Por otro lado, incluso los decimales de punto flotante pueden representarse perfectamente El valor que queremos calcular también provocará errores en los resultados del cálculo
Coma flotante y coma fija se refieren a la posición del punto decimal
Coma decimal fija: La posición del punto decimal es fijo.
Tome los decimales como ejemplo. Suponiendo que un tipo numérico puede tener 6 decimales, entonces el tipo de punto fijo no necesita registrar la posición del punto decimal. Puede tener los siguientes tipos: <. /p>
Tipo entero, posición del punto decimal Debe estar después del primer dígito. El número más preciso que se puede representar es 1. El rango que se puede representar es 000000 - 999999
Doble. tipo decimal de dígito. La posición del punto decimal debe ser el centésimo. El número más preciso que se puede representar es 000000 - 999999
El número preciso es 0,01 y el rango que se puede expresar es 0000,00 - 9999,99.
. . . . . . esperar.
Decimal de punto flotante: la posición del punto decimal puede cambiar y se necesitan registros adicionales para describir esta posición cambiante del punto decimal.
Suponga que una de las posiciones se utiliza para registrar la posición del punto decimal (rango variable 0-9) y especifique:
La posición del punto decimal es 5, lo que significa la precisión es 1 y el punto decimal está en primer lugar. Posteriormente, el lugar decimal de este tipo numérico es 0, que puede representar números entre 00000 y 99999 (nota: aquí solo hay 5 dígitos significativos)
La posición del punto decimal es 6, lo que significa que la precisión es 0,1, el punto decimal está después de las decenas. Este tipo numérico tiene 1 lugar decimal y puede representar números del 0000,0 al 9999,9
La posición del punto decimal es. 9, lo que significa que la precisión es 0,0001 y el punto decimal está después del lugar de los diez mil. Este tipo numérico tiene 4 lugares decimales y puede representar números del 0,0000 al 9,9999
......<. /p>
Tomar 4 dígitos después del punto decimal significa que la precisión es 10, lo que indica que el punto decimal está en diez bits, la precisión de este tipo numérico es 10, que puede representar números desde 00000 Es decir, el punto decimal está en el lugar 100.000. Este tipo numérico puede representar números desde 00000. Es un múltiplo de cada unidad de dígitos significativos y tiene lugares decimales variables, por lo que se pueden usar decimales de coma flotante para representar una parte de un número y otra parte del. número.
Los decimales de coma flotante representan múltiplos de cada unidad de dígito significativo
Esto permite la flexibilidad de representar una amplia gama de valores, pero a costa de una menor longitud de dígitos significativos que los decimales fijos. -punto decimal, porque Una parte del registro se utiliza para registrar la posición del punto decimal.
Las operaciones de punto flotante también tienen algunos problemas que no ocurren en las operaciones de punto fijo
Por ejemplo, sumar dos números
Si el primer punto flotante El número es 100,01, mientras que el segundo número de punto flotante es 9999900000
De acuerdo con las reglas anteriores, ambos números son números de punto flotante legales, pero su suma 99999000100,01 no se puede representar como el mismo tipo de número de punto flotante.
La computadora redondeará automáticamente al valor mayor cuando se encuentre con esta situación, por lo que
100.01 9999900000 = 9999900000 (un error de 100.01)
Esta es una de las causas de errores de coma flotante: los valores más pequeños son "absorbidos" por valores más grandes, y los valores más pequeños son "absorbidos" por valores más grandes. "absorber".
Es muy fácil demostrar esto en Excel, porque el decimal de coma flotante de tipo doble de Excel tiene solo 15 dígitos significativos (es decir, puede registrar hasta 15 dígitos decimales)
Entonces, operación de celdas de Excel 12345012345678900000 12345.0123456789 = 12345012345678900000
Para obtener más conocimientos sobre decimales de punto flotante, busque en el foro o en la red.
/kb/78113