valore jolly???

scusate se sto aprendo un sacco di post questo è l'ultimo promesso :slight_smile: il mio ultimo problema è questo io incremento un contatore di 0.5 quando si verifica una certa condizione if e vorrei poter porre una seconda condizione che si verifica solo quando il valore è intero ovvero se è 0.5 non viene verificata se è 1.0 si se è 2.0 si ecc perciò vi chiedo esiste per arduino il valore jolly es SQL # da poter mettere if valore == #.0 ed ogni volta che il valore è qualsiasi.0 si verifica grazie scusate la rottura :slight_smile:

Che io sappia non esiste però puoi convertire i numeri in sequenze di caratteri e poi vedi se hanno il punto oppure no.

puoi farmi un piccolo esempio perchè non ho capito bene

Lascia stare ciò che ti ho detto perchè dovresti usare le stringhe che non sono bene supportate. Fai così.
Ad esempio hai 45.541 come numero salvato nella variabile fl allora:

fai un cast ad int e lo salvi in una variabile --> int parcheggio=(int) fl
fai la differenza fl-parcheggio
hai 0.541
vedi se è maggiore di 0.000000001
Se non lo è vuol dire che il numero non era intero.

Il numero di zeri dopo la virgola dipende dal numero di cifre del numero float che devi trattare.

ottimo perchè a me queste idee non vengono mai XD grazie mille

uhh potresti fare il modulo della divisione per 1, peccatonon funzioni con i float ed arduino. Un'altra soluzione è moltiplicare per 10, trasformare in un intero e fare il modulo di 10.

Prova con la funzione Round(double N), G

Se l'incremento è fisso a 0.5 la soluzione è semplice, anzi me ne vengono a mente un paio:

if (int(numero * 10) % 5 == 0) {
  //ho trovato un numero x.5
} else {
 //numero intero
}

oppure:

if (int(numero) != (int(numero +0.5)) {
  //ho trovato un numero x.5
} else {
  //numero intero
}

Nel primo moltiplica il numero per 10, ne prende la parte intera e fa una divisione modulo 5. Se il numero aveva il decimale .5, il numero % 5 dà resto 0. Altrimenti era .0 ed allora il modulo sarà 5, quindi diverso da 0.

Nel secondo aggiunge al numero 0.5 e poi prende la parte intera.
Se il numero era .5, la somma con .5 fa aumentare il numero di 1 unità, altrimenti se era .0 resta invariato perché un numero .5 trasformato in intero viene semplicemente troncato.
Esempio:
49.0 + 0.5 = 49.5 -> 49 per cui 49 == 49
49.5 + 0.5 = 50.0 -> 50 per cui 49 != 50