es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Redondeo de Valores Almacenados vs Valores sobre la Marcha.

Considere el promedio de cuatro números {4.1, 4.1, 4.1, 4.3}, redondeado al decimal más cercano.

El promedio de los cuatro números es exactamente 4.15; al utilizar la función Round de VBA se obtiene el resultado correcto de 4.2. Sin embargo, si se le proporciona la expresión que calcula el promedio, redondea de manera incorrecta: Round((4.1 + 4.1 + 4.1 + 4.3)/4, 1) devuelve 4.1. Puedo obtener una respuesta correcta realizando algo como Round(Round((4.1 ...)/4), 5), 1), por lo que sospecho que tiene algo que ver con cómo se almacenan los resultados de las expresiones. También intenté multiplicar cada número por 10 y luego dividir por 40, pero el redondeo seguía siendo incorrecto.

¿(4.1 + 4.1 + 4.1 + 4.3)/4?
4.15
¿Round(4.15, 1)?
4.2
¿Round((4.1 + 4.1 + 4.1 + 4.3)/4, 1)?
4.1
¿Round(Round((4.1 + 4.1 + 4.1 + 4.3)/4, 5), 1)?
4.2
¿Round((4.110 + 4.110 + 4.110 + 4.310)/40, 1)?
4.1

Pregunta: ¿Cuál es la diferencia en Excel/VBA entre recibir un número decimal directamente y recibir una expresión que se evalúa como un número decimal?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Cuando se le da un número decimal directamente, Excel/VBA lo almacenará como un valor específico. Sin embargo, cuando se le da una expresión que se evalúa como un número decimal, Excel/VBA puede almacenar el resultado como un valor ligeramente impreciso debido a la aritmética en punto flotante. Esta imprecisión puede afectar el redondeo y otros cálculos. Es importante ser consciente de esto al trabajar con números decimales en Excel/VBA.

Comments are closed.