Vai al contenuto
PLC Forum


Differenza tra 2 numeri reali


fiorezzz

Messaggi consigliati

Salve a tutti 

Premetto che sono in simulazione sul PC 

Perchè se faccio la diff (-R) tra 2 numeri reali   100,2 -100,4 Ottengo 0,2000046  che se poi lo confronto con 0,20  non lo trovo == 

Link al commento
Condividi su altri siti


Ma i valori 100.2 e 100.4 li scrivi tu, o sono il risultato di altri calcoli?
Nel primo caso, mi pare un po' strano; nel secondo caso, significa semplicemente che i valori sono approssimati (come è normalmente con le variabili REAL), e non vedi le ultime cifre.

 

Fai una prova: converti le variabili da Real a LReal, e guarda il risultato del calcolo fatto con le LReal.

 

Comunque, con variabili Real, o anche LReal, se non si ha l'assoluta certezza che il risultato di calcoli non contenga approssimazioni, mai fare comparazioni per valori uguali.

Modificato: da batta
Link al commento
Condividi su altri siti

Ops...

Comunque è simile anche in STEP7 ..sinceramente facendo pochi conti non me lo ricordavo  

 

Chiaramente poi se faccio un compare a 0,20 mi da FALSE ..quando mi a spetto TRUE ..questo in entrambi i sistemi 

Chiaramente poi se faccio un compare a 0,21 mi da TRUE  

 

 

Modificato: da fiorezzz
Link al commento
Condividi su altri siti

sono variabili. ti basta dichiararle Lreal invece che Real.

nel tuo esempio non è possibile, usi numeri veri, non variabili

 

ho fatto una prova effettivamente con variabili real succede quanto dici. con lreal no.

col simulatore, non con una cpu vera

Link al commento
Condividi su altri siti

Ho provato a usare  variabili LReal mai poi come le uso visto che 

 L     #v1    .il TIA dice che non è un operazione ammessa  (dipende forse dal tipo CPU ..sto usando 1510 F) 
   

Per la matematica è un problema di simulazione  o si ha anche su CPU fisica 

 

Link al commento
Condividi su altri siti

Ho fatto verifica su CPU Fisica (potenza del smart working) e il risultato della differenza è lo stesso 

 

Mi rimane da capire come operare con i LReal 

Link al commento
Condividi su altri siti

Non so la classe di precisione che vuoi avere, ma se moltiplichi entrambi per mille, li tronchi e fai una differenza tra due DINT?

Link al commento
Condividi su altri siti

Il formato Real è, per sua natura, un formato che fornisce valori approssimati. Lo stesso vale per il formato LReal, solo che ha una precisione maggiore.
Non dobbiamo MAI fare confronti di uguaglianza con il formato Real.

Link al commento
Condividi su altri siti

Normalmente ,non solo sui plc ma anche i PC, se devi confrontare 2 numeri in virgola mobile, ti conviene fare la differenza, trovarti il valore assoluto , e verificare che sia inferiore ad un valore prossimo allo 0 (es 0.0001) , e se inferiore puoi considerare il confronto valido

 

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...