Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Differenza tra 2 numeri reali


Messaggi consigliati

Inserito:

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 == 


Inserita: (modificato)

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
Inserita:

 

image.thumb.png.525673b1c6b49081ba58c2acb21f79b5.png

 

Sono in simulazione al PC ..ora provo le LReal  e anche in Step7 ..non mi ricordo di questo comportamento

Inserita: (modificato)

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
Inserita:

E scusando la mia beata ignoranza ma come si opera con i LReal ..ci sono funzioni apposite ? 

 

Inserita:

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

Inserita:

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 

 

Inserita:

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 

Inserita:

scrivilo in kop oppure scl.

in awl non ho mai provato ad utilizzare variabili L

Inserita:

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

Inserita:

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.

Inserita:

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

 

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...