Case Structure, impostazione del range di valori di accettab
Moderatore: ILVG mod
-
- Advertisement
3 messaggi
• Pagina 1 di 1
Case Structure, impostazione del range di valori di accettab
Ciao,
in una case structure se scrivo 1..10 significa che deve eseguire il contenuto di quel case se il valore in entrata è compreso fra 1 e 10 estremi inclusi.
Come posso dire di escludere uno dei due estremi? cioè esegui se compreso fra 1 e 10 ma 10 escluso?
in una case structure se scrivo 1..10 significa che deve eseguire il contenuto di quel case se il valore in entrata è compreso fra 1 e 10 estremi inclusi.
Come posso dire di escludere uno dei due estremi? cioè esegui se compreso fra 1 e 10 ma 10 escluso?
..non voglio più dire è tardi o è peccato..
- giuseppe.l74
- Utente Attivo +
- Messaggi: 135
- Iscritto il: dom ott 09, 2005 2:04 pm
- Località: Torino
Advertisement
Re: Case Structure, impostazione del range di valori di accettab
giuseppe.l74 ha scritto:Ciao,
in una case structure se scrivo 1..10 significa che deve eseguire il contenuto di quel case se il valore in entrata è compreso fra 1 e 10 estremi inclusi.
Come posso dire di escludere uno dei due estremi? cioè esegui se compreso fra 1 e 10 ma 10 escluso?
ciao Giuseppe
vado per deduzione, spero di azzeccare.
Ti riporto una parte dell'HELP di LabVIEW2016 ottenuto selezionando la vista dettagliata:
<<
Case selector—Selects which case to execute based on the value of the input data. The input data can be a Boolean, string, integer, enumerated type or error cluster. The data type you wire to the case selector determines the allowed cases you can enter in the selector label.
>>
Come ti ho evidenziato, la struttura "case" può essere controllata tramite valori di tipo "discreto", (non continuo).
In soldoni, non può essere controllata da un numero in virgola mobile.
Il motivo è molto semplice ed è lo stesso per il quale, quando si controlla un valore numerico in virgola mobile, sia esso FLOAT o DOUBLE o altro, non si usa MAI l'operatore di uguaglianza (floiat x; if (x == 3.3) per es. non si fa MAI), ma si controlla che esso sia entro un certo range.
Se per caso ti fosse venuto in mente di collegare un filo arancione (float o double) all'ingresso del case selector, avrai notato il pallino (coercion dot) di "conversione automatica forzata" mentre il colore del case selector sia blu (non arancione): questo significa che il tuo valore in virgola mobile viene convertito in intero.
E come viene convertito un numero in virgola mobile in intero? Per arrotondamento.
Significa che da x.0 a x.49999999999999999999999 --> si ottiene x
da x.5000000000000000001 a x.9999999999999999999 --> si ottiene x+1
per x.5 --> si ottiene il numero pari + vicino (es. 0.5 --> 0; 1.5 --> 2; 2.5 --> 2; 3.5 --> 4; 4.5 -->4 ecc)
per concludere risolvendo il tuo quesito:
se stai manipolando numeri interi --> basta specificare il range 1..9
se stai manipolando numeri floating point -->
1) aggiungi Functions-->Comparison-->In Range and Coerce
2) sistema opportunamente i limiti di confronto
3) sfrutta l'uscita booleana dell' "In Range and Coerce" e collegala al case selector
bye
Mai dire Mai
- paracarro
- Moderatore
- Messaggi: 877
- Iscritto il: lun ago 18, 2003 3:04 pm
- Località: MILANO
Re: Case Structure, impostazione del range di valori di accettab
Grazie,
hai ragione, non ci avevo pensato!
hai ragione, non ci avevo pensato!
..non voglio più dire è tardi o è peccato..
- giuseppe.l74
- Utente Attivo +
- Messaggi: 135
- Iscritto il: dom ott 09, 2005 2:04 pm
- Località: Torino
3 messaggi
• Pagina 1 di 1
Chi c’è in linea
Visitano il forum: Nessuno e 6 ospiti