Acerca de las aproximaciones

03/07/2004 - 01:02 por Henry Sanchez | Informe spam
Hola Grupo,
Con el fin de evitar equivocaciones en los calculos que
realizan mis clientes, hago uso constante del redondeo,
tanto en el codigo VBA como en las formulas de las hojas
de trabajo.
Esto funciona, bien excepto cuando el ultimo decimal es
cinco, aca se presenta una ambiguedad que VBA maneja
diferente a la hoja de trabajo, me explico:
Si en la celda A1 colocamos =REDONDEAR(0.5,0) el
resultado es 1.
Y si en la ventana inmediato de VBA colocamos ? ROUND
(0.5,0) el resultado es 0.
Esta falta de uniformidad en el manejo de la aproximacion
me esta generando errores de calculo dentro de una de mis
aplicaciones

Ya estoy dispuesto a entrar a corregir mi codigo
reemplazando la funcion de Round por
worksheetfunction.Round con lo cual parece que resolveria
el problema, pero antes queria saber si alguno de uds
conoce algun metodo diferente, pues por lo general no
acostumbro a usar las funciones tipo WorksheetFunction
dentro de mi codigo.

Saludos,

Henry
 

Leer las respuestas

#1 Héctor Miguel
03/07/2004 - 06:21 | Informe spam
hola, Henry !

... hago uso constante del redondeo, tanto en ... VBA como en las formulas de las hojas de trabajo.
... funciona bien excepto cuando el ultimo decimal es cinco
... una ambiguedad que VBA maneja diferente a la hoja de trabajo
... en la celda A1 colocamos =REDONDEAR(0.5,0) el resultado es 1.
... en la ventana inmediato de VBA colocamos ? ROUND (0.5,0) el resultado es 0 [...]
... estoy dispuesto a ... corregir mi codigo reemplazando ... Round por worksheetfunction.Round [...]
... pero antes queria saber ... algun metodo diferente
... por lo general no acostumbro a usar las funciones tipo WorksheetFunction dentro de mi codigo.



imagino que 'el detalle' se presenta cuando la fraccion es =>exactamente<= el 'justo medio' (0.5)
[seguramente 'estas encontrando' que...] la 'elevacion' =>ocurre<= SOLAMENTE en los [enteros] 'nones'
[efectivamente] 'mientras' que la funcion [round] de hoja de calculo tiene un comportamiento 'normal-esperado'...
la funcion de vba 'sigue' [alg]un 'convencionalismo' llamado 'redondeo contable-bancario'
[cuando se trata del 'justo medio'] =>numeros nones... se eleven<= =>numeros pares... NO<
si te sirve 'de consuelo' [y con tu dsisculpa por la broma] :)) ...
puedes 'obviar' [en codigo] la instruccion 'completa' de...
=>Application.WorksheetFunction.Round<= por ['simplemente'] =>Application.Round<
saludos,
hector.

Preguntas similares