Pages: [1]   Go Down
Author Topic: Come faccio a scrivere un valore con 2 decimali dopo la virgola?  (Read 414 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 36
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Problema stupido ma al momento sono in panne  smiley-red

Ho una variabile Val che è il risuktato di un operazione matematica e mi da valori con molti decimali es. 3.956478512 ora usando l'istruzione per scrivere sul display lcd.print(val); mi viene scritta solo l'intero.

Come faccio a dirgli di voler vedere così: 3.95
Logged

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 313
Posts: 21651
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

La LiquidCrystal supporta sulla print solo numeri interi o stringhe:
http://arduino.cc/en/Reference/LiquidCrystalPrint

Devi convertire quindi il tuo numero in virgola mobile in una stringa oppure spezzarlo in 2 interi (il primo per la parte intera ed il secondo per la parte decimale: basta un int(val*100) per avere i 2 decimali), separati dalla stampa del "."
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 36
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

non ho capito smiley-cry
Logged

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 120
Posts: 9185
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

non ho capito smiley-cry

Leggi a partire da qui, c'è la soluzione al tuo problema.
Logged

piacenza
Online Online
God Member
*****
Karma: 0
Posts: 589
prima della pazzia c'è la passione
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ciao
stavo leggendo questa discussione, in questa parte di programma non si usano stringhe, quindi i risultati che ottengo non sono corretti anche se mi sembravano attendibili
 
Code:
void printTemperature(DeviceAddress deviceAddress)
{
  float tempC=sensors.getTempC(deviceAddress);
  delay(500);
  if (tempC==-127.00)
  {
    Serial.print("Error getting temperature");
  }
  else
  {
   Serial.print("C: ");
  //datostringTEMP=String(int(tempC*100));
  Serial.println(tempC,3);

  lcd.setCursor(0,2);
  //lcd.print((char)223);//arduino symbol ° lcd
  lcd.write(B11011111);//arduino symbol ° lcd
    lcd.print("C");
   lcd.setCursor(3,2);
     lcd.print (tempC,3);
    } 

Logged


Pages: [1]   Go Up
Jump to: