problem z funkcją lcd.print

Masz problem, z którym nie możesz sobie poradzić? Pisz śmiało!
ODPOWIEDZ
Lysy
Młodszy majsterkowicz
Posty: 6
Rejestracja: 16 sie 2015, 19:16

problem z funkcją lcd.print

Post autor: Lysy » 16 sie 2015, 19:27

Witam!
Mam problem z funkcją lcd.print().
Fragment kodu:

x=344,456;
lcd.print(x,3);

powoduje wyświetlenie wartości 344,000 natomiast np:

x=1;
lcd.print(sin(x),3);

powoduje wyświetlenie wartości 0,841

Podsumowując - chcę uzyskać wyświetlanie wartości z precyzją do trzech miejsc po przecinku - jeśli podstawiam swoją funkcję (lub po prostu zmienną) to po przecinku zawsze dostaję zera, jeśli podstawię np sin() to jest OK.

Czy ktoś ma jakiś pomysł dlaczego tak jest?

Co miesiąc do wygrania nagrody o wartości ponad 1600 zł!


lukasz
Majsterkowicz
Posty: 59
Rejestracja: 21 sty 2014, 21:02

Re: problem z funkcją lcd.print

Post autor: lukasz » 16 sie 2015, 19:30

X jakiego masz typu? Może masz zadeklarowany int zamiast float

Wysłane z mojego LG-D605 przy użyciu Tapatalka
Lysy
Młodszy majsterkowicz
Posty: 6
Rejestracja: 16 sie 2015, 19:16

Re: problem z funkcją lcd.print

Post autor: Lysy » 16 sie 2015, 19:43

Różnie próbowałem, float, double.
Zawsze mam tak samo, zeruje po przecinku...
stiven
Złota rączka
Posty: 1645
Rejestracja: 13 maja 2014, 08:47
Lokalizacja: Zielona Góra

Re: problem z funkcją lcd.print

Post autor: stiven » 16 sie 2015, 21:21

Kod: Zaznacz cały

  x=344.456;
Tam ma być kropka. No ale to na pewno nie o to chodzi, bo jakbyś tak rzeczywiście napisał w programie, to by się nie skompilował.
W programie przypadkiem nie jest tak, że do zmiennej, która ma być wyświetlona, wpisujesz wartość z obliczeń i wykorzystane zmienne nie są typu float? Można tak zrobić, ale żeby wynik był typu float, to trzeba skorzystać z rzutowania typu, lub jeśli w działaniu jest jakaś liczba, to zapisać ją "jako float".

Kod: Zaznacz cały

  int z = 10; 
  x = z / 3;   //wynik będzie intem, zamiast 3,333, to 3,000
  lcd.print(x,3);

Kod: Zaznacz cały

  x = float(z) / 3;   //rzutowanie typu, wynik będzie typu float

  x = z / 3.0;   //inny sposób na wskazanie kompilatorowi, żeby wynik był typu float
Lysy
Młodszy majsterkowicz
Posty: 6
Rejestracja: 16 sie 2015, 19:16

Re: problem z funkcją lcd.print

Post autor: Lysy » 16 sie 2015, 21:48

Dzięki, tam rzeczywiście ma być kropka. Głupi błąd. Ciekawe, kompilator tego nie odrzucił ale łyknął jak pelikan rybkę...
W każdym razie chodzi super. Zamykam temat.
ODPOWIEDZ

Strony partnerskie: