Red de conocimiento informático - Aprendizaje de programación - ¿Qué debo hacer si los datos calculados en Excel son inconsistentes?

¿Qué debo hacer si los datos calculados en Excel son inconsistentes?

Intente cambiar la computadora. Debería ser un error causado por decimales de punto flotante. Quizás cambiar la computadora ayude.

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

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