Dtostrf - Allineamento

Ciao a tutti
Qualcuno mi sa spiegare perché dtostrf allinea a sinistra?

Grazie
Gianluca

void scrive_frequenza(uint8_t x, uint8_t y)
  {
  char buf[6]; // 3, la virgola, 1 decimale e il terminatore.
  dtostrf(frequenzax10/10.0, 3, 1, buf);
//  if(frequenzax10<1000) dtostrf(frequenzax10/10.0, 3, 1, buf);
//  else {x-=1; dtostrf(frequenzax10/10, 3, 0, buf);}
  lcd.setCursor(x,y); lcd.print(buf);
  }
0.5
1.8
8.0
10.0
100.0

Tornando indietro, poi, rimangono anche gli zeri finali!

18.0
5.00
0.80

Ricontrolla i parametri che gli stai passando ...

dtostrf (float_value, min_width, num_digits_after_decimal, where_to_store_string)

specie il significato di min_width e num_digits_after_decimal :wink:

Guglielmo

Ah! E' la larghezza totale, non il numero di cifre della parte intera, come avevo letto da qualche parte!!!

Ti ringrazio molto, Guglielmo. Avevi ragione, era sbagliata la lunghezza, ma alla fine, per avere un decimale solo al di sotto di 100, ho dovuto fare così, perché con dtostrf non ci sono riuscito:

void scrive_frequenza(uint8_t x, uint8_t y)
  {
  lcd.setCursor(x,y);
  uint16_t parte_intera=frequenzax10/10;
  if(frequenzax10<1000) // Meno di 100Hz.
    {
    lcd.print(' '); // Lascia uno spazio.
    if(frequenzax10<100) lcd.print(' '); // Lascia un altro spazio.
    lcd.print(parte_intera); // Scrive la parte intera.
    lcd.print(',');
    lcd.print(frequenzax10-parte_intera*10);
    }
  else {lcd.print(parte_intera); lcd.print("  ");}
  }

Senza usare dtostrf() puoi sempre usare questa mia semplice funzione che mi ero a suo tempo scritta: floatToString.h (1.7 KB) :wink:

Guglielmo

1 Like

Beh... Ormai ho risolto quello e sono anche andato avanti (ho finito?...), però sarà interessante da studiare.
Grazie!

... mi viene solo il dubbio che quella l'avevo estrapolata da un'altra già esistente :thinking: ... io ricordo di averne scritta un'altra ancora ... la devo cercare :joy:

Guglielmo

Ahi, ahi, ahi... Questo è plagio, eh! :joy:

Funziona, eh! Hai visto il video?

Naaaaa ... mica ci ho messo il mio nome, e ... ammetto pubblicamete che mica mi ricordo come e da dove è venuta fuori :joy: :joy: :joy:

Guglielmo

... come quest'altra del resto ... che vedo ha come data di creazione del file il 2017 :roll_eyes: ... e chi si ricorda dopo più di 5 anni come è uscita fuori :laughing: :laughing: :laughing:

Dagli un'occhiata: ftoa_example.ino (821 Bytes)

Guglielmo

Si, complimenti ! :slight_smile:

Guglielmo

Grazie! :slight_smile:

Quando hai cominciato a trafficare con i caratteri, mi sono un po' perso...
Beh, vado di là da mia moglie!
Ciao :slight_smile:

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.