ricostruzione variabile float

Mi chiedevo è possibile dividere un variabile float? ho esigenza di variare attraverso il display ed encoder prima la parte antecedente la virgola che può essere sia negativa che positiva. sotto un'altra voce la parte "decimale" questa sarà solo positiva per un valore massimo di 100. ovviamente i due parametri appartengono ad una unica variabile che sarà necessariamente una float perché sia positiva che negativa e con la virgola. mi chiedevo se ci fosse un metodo per ricostruire una float partendo ad esempio da due int.

int a

int b

float c = a + b

l'esempio lascia abbastanza a desiderare però è come se quel + dovesse trasformarsi in una virgola. Spero aver reso l'idea

ciao...giusto per capire...l'eventuale valore 5.-125 come dovrebbe essere interpretato?

comunque forse se chiarisci a cosa ti servirà questa float magari riusciamo a darti qualche "buon" consiglio...

ORSO2001:
ciao...giusto per capire...l'eventuale valore 5.-125 come dovrebbe essere interpretato?

comunque forse se chiarisci a cosa ti servirà questa float magari riusciamo a darti qualche "buon" consiglio...

coordinate geografiche il segno meno dice ovest, est è positivo, stesso discorso per nord e sud la prima parte sono i gradi la seconda i primi
es.

int a = -40
int b = 35

float c = -40.35

float c è la variabile che mi serve ricavare da int a + b

ah...scusa avevo letto male il tuo post...pensavo che la parte dopo la virgola poteva essere negativa.
...però non ho capito a cosa ti serve il float...o meglio...non puoi semplicemente avere due variabili una per i gradi ed una per i primi? o la devi "passare" a qualche cosa che accetta solo float?

ORSO2001:
ah...scusa avevo letto male il tuo post...pensavo che la parte dopo la virgola poteva essere negativa.
...però non ho capito a cosa ti serve il float...o meglio...non puoi semplicemente avere due variabili una per i gradi ed una per i primi? o la devi "passare" a qualche cosa che accetta solo float?

la seconda ho bisogno della float ma editare un valore positivo o negativo che va da -180.00 a +180.00, e +90.00 a -90.00 diventa un po' complicato e poco manegevole, per cui avevo pensato di dividere la float in due int e poi ricomporla ma francamente non ho idea ne se si possa fare e ne come fare.

ho pensato questo

int a =-40

int b = -17/100

float c = a+b

anche se il segno meno della int b lo vorrei gestire in maniera diversa perché solo la int a ha bisogno del segno la int b no ma nell'operazione se int b non ha lo stesso segno di a sballa tutto. devo provare

secondo me funziona meglio questo

int a =-40;
int b = -17;
float c = a + (b / 100.00);

ciao...gestire la tua soluzione è "semplice"...:
if a < 0 allora float = a-(b/100.00)
if a >= 0 allora float = a+(b/100.00)
ma questa comporta cast a float e arrotondamenti vari

adesso non so come vuoi gestire la selezione tra parte a sx e a dx della virgola però supponendo un pulsante che se premuto fa i decimali se non premuto fa le unità:

if pulsante selezione premuto
if pulsante + premuto float+= 0.1 o 0.01
if pulsante - premuto float -= 0.1 o 0.01

if pulsante selezione non premuto
if pulsante + premuto float+= 1
if pulsante - premuto float -= 1

potresti gestire la verifica della pressione dei pulsanti + e - con millis in modo da avere inc e dec di 1-10-100 oppure sempre di 1 ma più veloci....

Scritto una boiata int con la virgola non è possibile

fratt:
secondo me funziona meglio questo

int a =-40;

int b = -17;
float c = a + (b / 100.00);

Hai ragione infatti la int non può avere virgola... Grazie a tutti vi aggiorno appena ho tempo di fare qualche prova

ho risolto in questa maniera

float latitudine

int gradi = 40;

int primi = 67;

latitudine = ((float) gradi) + ((float) primi / 100);

risultato 40.67

grazie a tutti

ecco ora prova con

int gradi = -40;

int primi = 67;

e controlla il risultato :smiley: