vergalabs Inserito: 9 giugno 2018 Segnala Inserito: 9 giugno 2018 buongiorno a tutti cercando nei manuali siemens mi sembra di non aver trovato niente che faccia al caso mio. Io vorrei troncare 5 dei 6 decimali di un numero reale risultato di una divisione per avere un numero reale con solo una cufra decimale cioè da 23,123456 a 23,1. qualcuno conosce un'istruzione per il 1200 che faccia già questa operazione ? in un'altro forum ( https://www.plcforum.it/f/topic/170555-taratura-trasduttore/?do=findComment&comment=1238773 ) drugo 66 proponeva di: moltiplicare il real * 1000 convertire in dint convertire in real dividere /1000 per avere 3 decimali io dovrei moltiplicare per 10 e dividere per 10 ? secondo voi funziona? grazie
batta Inserita: 9 giugno 2018 Segnala Inserita: 9 giugno 2018 Non riesco a capire il senso di questa operazione. A cosa ti serve eliminare i decimali? Comunque, per avere 1 cifra decimale (tipo 23.1) puoi moltiplicare per 10 (e ti trovi con 231.23456), eliminare i decimalei con TRUNC o con RND (e ti rimane 231 - vedi nella guida la differenza tra le due operazioni), dividere per 10 e ti trovi con 23.1
vergalabs Inserita: 9 giugno 2018 Autore Segnala Inserita: 9 giugno 2018 Grazie batta Mi serve perché devo comparare il risultato di una media di pesate da una siwarex con un valore reale inserito in una ricetta che ha solo un decimale, quindi non vorrei che erroneamente il risultato 12,29999 comparato == a 12,3 no sia valido anche se in realtà lo è. Mi piace la tua proposta ma mi sa che trunc è rnd non gradiscano i real e poi approssimano all'intero più alto o basso ma potrebbe funzionare lunedì provo
batta Inserita: 10 giugno 2018 Segnala Inserita: 10 giugno 2018 Quote Mi piace la tua proposta ma mi sa che trunc è rnd non gradiscano i real TRUNC e RND si usano proprio con i REAL, e danno come risultato un DInt. TRUNC semplicemente taglia la parte decimale. Per esempio, 3.7 diventa 3. RND invece approssima, Per esempio, 3.7 diventa 4.
batta Inserita: 11 giugno 2018 Segnala Inserita: 11 giugno 2018 E poi, piuttosto che troncare i decimali, non ti conviene, anziché fare una semplice comparazione, utilizzare, per esempio, la funzione IN_Range?
vergalabs Inserita: 11 giugno 2018 Autore Segnala Inserita: 11 giugno 2018 grazie ancora batta non utilizzo IN_range in quanto devo verificare se il valore pesato è ==,> o < del peso inserito nella ricetta quindi ho utilizzato 3 comparazioni che mi attivano lo scarto e conteggiano il prodotto conforme troppo alto o troppo basso. alla fine ho optato per la prima soluzione che mi avevi suggerito: valore*10 --- round --- valore_round/10 così ottengo il valore con 1 sola cifra decimale e non troppo arrotondato. ciao ciao
elettrix01 Inserita: 11 giugno 2018 Segnala Inserita: 11 giugno 2018 Ciao, secondo me potresti usare la funzione in_range per l'uguale (es 12.3 metti in_range tra 12.25 e 12.35) e poi fai il confronto del maggiore e minore rispettivamente con 12.35 e 12.25
vergalabs Inserita: 11 giugno 2018 Autore Segnala Inserita: 11 giugno 2018 per il confronto ho fatto così ma i valori da comparare me li sono creati come suggerito da batta ciao ciao
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora