Diferencia entre 2 números iguales. Por Que?

Diferencia entre 2 números iguales. Por Que?

Postby José Camilo » Mon Aug 07, 2023 1:56 pm

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
José Camilo
 
Posts: 210
Joined: Wed Apr 07, 2021 3:56 pm

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

Postby Manuel Aranda » Mon Aug 07, 2023 2:17 pm

¿Has probado a usar esto?

Code: Select all  Expand view  RUN


 if (nIngEfe-nEgrEfe) == nTotArq

 
Un saludo,
Manuel

xH 1.2.3, FWH 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC
User avatar
Manuel Aranda
 
Posts: 604
Joined: Wed Oct 19, 2005 8:20 pm
Location: España

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

Postby carlos vargas » Mon Aug 07, 2023 3:33 pm

Para comparar números usa la función
Code: Select all  Expand view  RUN

round(num1,2)==round(num2,2)
 
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1720
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

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

Postby José Camilo » Tue Aug 08, 2023 2:52 am

Muchas gracias Manuel y Carlos.
José Camilo
 
Posts: 210
Joined: Wed Apr 07, 2021 3:56 pm

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

Postby albeiroval » Tue Aug 08, 2023 4:45 am

carlos vargas wrote:Para comparar números usa la función
Code: Select all  Expand view  RUN

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  RUN

num1 := 15.25
num2 := 15.25

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

Albeiro Valencia
www.avcsistemas.com
User avatar
albeiroval
 
Posts: 373
Joined: Tue Oct 16, 2007 5:51 pm
Location: Barquisimeto - Venezuela

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

Postby carlos vargas » Tue Aug 08, 2023 6:25 am

Creo es por que en los números los decimales podrían ser

15.25000001 == 15.2500012 //falso
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1720
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

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

Postby Antonio Linares » Tue Aug 08, 2023 8:32 am

Asi funciona bien:
Code: Select all  Expand view  RUN
  if ( 15.25000001 - 15.2500012 ) != 0
      ? "si"
   endif
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42103
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

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

Postby FranciscoA » Thu Aug 10, 2023 4:52 pm

Intenta de esta manera:
if Str( nIngEfe-nEgrEfe, 12,2) == Str( nTotArq, 12,2)
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2158
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 45 guests