Page 1 of 1

Diferencia entre 2 números iguales. Por Que?

PostPosted: Mon Aug 07, 2023 1:56 pm
by José Camilo
Buenos días.
Me sucede que el resultado de esta resta es IGUAL al valor de la varible y sin embargo sale por el ELSE.
Por que puede suceder esto? como lo evito?

if (nIngEfe-nEgrEfe) = nTotArq
If MsgYesNo('Confirma Cierre de Caja '+str(nQueCaja,5)+' ?','Caja')
CajTFor->Cierre := qfecha
....
endif
else
MsgAlert(' Arqueo: '+Transform(nTotArq,'99,999,999.99')+CRLF+ ;
'Saldo en Caja: '+Transform((nIngEfe-nEgrEfe),'99,999,999.99') +CRLF+CRLF+' NO SE PUEDE CERRAR CAJA!!!!'+CRLF+CRLF+'No
Coincide el Saldo en efectivo con el arqueo !!!','Atención!!!')
endif


Gracias

Re: Diferencia entre 2 números iguales. Por Que?

PostPosted: Mon Aug 07, 2023 2:17 pm
by Manuel Aranda
¿Has probado a usar esto?

Code: Select all  Expand view


 if (nIngEfe-nEgrEfe) == nTotArq

 

Re: Diferencia entre 2 números iguales. Por Que?

PostPosted: Mon Aug 07, 2023 3:33 pm
by carlos vargas
Para comparar números usa la función
Code: Select all  Expand view

round(num1,2)==round(num2,2)
 

Re: Diferencia entre 2 números iguales. Por Que?

PostPosted: Tue Aug 08, 2023 2:52 am
by José Camilo
Muchas gracias Manuel y Carlos.

Re: Diferencia entre 2 números iguales. Por Que?

PostPosted: Tue Aug 08, 2023 4:45 am
by albeiroval
carlos vargas wrote:Para comparar números usa la función
Code: Select all  Expand view

round(num1,2)==round(num2,2)
 


Carlos yo tambien utilizo tu codigo para comparar dos valores numericos, lo que no entiendo es porque no se puede hacer de manera simple :

Code: Select all  Expand view

num1 := 15.25
num2 := 15.25

if num1 == num2   // if round(num1,2)==round(num2,2)
   ? "Iguales"
else
  ? "no iguales"  <------- Siempre retorna esto
endif
 

Re: Diferencia entre 2 números iguales. Por Que?

PostPosted: Tue Aug 08, 2023 6:25 am
by carlos vargas
Creo es por que en los números los decimales podrían ser

15.25000001 == 15.2500012 //falso

Re: Diferencia entre 2 números iguales. Por Que?

PostPosted: Tue Aug 08, 2023 8:32 am
by Antonio Linares
Asi funciona bien:
Code: Select all  Expand view
  if ( 15.25000001 - 15.2500012 ) != 0
      ? "si"
   endif

Re: Diferencia entre 2 números iguales. Por Que?

PostPosted: Thu Aug 10, 2023 4:52 pm
by FranciscoA
Intenta de esta manera:
if Str( nIngEfe-nEgrEfe, 12,2) == Str( nTotArq, 12,2)