Colabora
 

Error de Clipper al comparar números

Al sumar dos valores y compararlos con uno igual

 

Fecha: 14/Jul/2007 (13-jul-07)
Autor: Ricardo Pedersoli - [email protected]
 

Introducción

Análisis y posible solución al problema de la comparación de dos variables que tienen el mismo valor, pero cuya comparación da que son distintas.

 

Solución

Lamentablemente pude comprobar yo mismo que el error encontrado en Clipper es cierto, muy a pesar mío que llevo años usando este lenguaje con mucha satisfacción. Ahora conociendo esto me implica una revisión casi completa de mis programas. Traté de resolver el error empleando comandos y funciones. Se que no tiene sentido alguno, pero el error se resuelve en este caso haciendo uso de la función round(número, decimales). Adjunto el código de ejemplo, donde dejé el código original que falla, y el código modificado con el round que corrige el error.

Sinceramente inaceptable este error de Clipper. Actualmente uso la versión 5.2e del compilador

El código:

? Var1 := 2045.18
? Var2 := 500
? Tot := 2545.18
? (Var1 + Var2)

// manera correcta conceptualmente
// pero que da un resultado falso

If Tot == (Var1 + Var2)
  ? "Igual"
Else
  ? "Distinto"
EndIf

// el round resuelve el problema
// a pesar que no tiene sentido

If round(Tot,2) == round(Var1 + Var2, 2)
  ? "Igual"
Else
  ? "Distinto"
EndIf


 

 

 


Ir al índice principal de el Guille