Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Bimbo
Člen
Avatar
Bimbo:21.3.2016 22:20

Zdravím.

S teplloměru mam výstup 22.20
Potřebují to zaokrouhlít na 1 desetine čislo 22.2

float a = 22.20;
String b = String(a,1);
Serial.println( a); //20.20
Serial.println( b); //20.2

Jak však na to, když nechcí string ale zase float?

 
Odpovědět
21.3.2016 22:20
Avatar
Tomáš Brůna
Tvůrce
Avatar
Odpovídá na Bimbo
Tomáš Brůna:21.3.2016 22:29

zkusil bych

float(string)

PS: používej tlačítko code
PS2: příště se hodí zmínit že jde o arduino ;)

Nahoru Odpovědět
21.3.2016 22:29
Vi veri universum vivus vici
Avatar
Tomáš Brůna
Tvůrce
Avatar
Nahoru Odpovědět
21.3.2016 22:30
Vi veri universum vivus vici
Avatar
Bimbo
Člen
Avatar
Bimbo:21.3.2016 22:47

float(string) jsem zkoušel
To mi uděla s 20.2 zas 20.20

 
Nahoru Odpovědět
21.3.2016 22:47
Avatar
Tomáš Brůna
Tvůrce
Avatar
Odpovídá na Bimbo
Tomáš Brůna:21.3.2016 22:53

tak to potom netuším

Editováno 21.3.2016 22:54
Nahoru Odpovědět
21.3.2016 22:53
Vi veri universum vivus vici
Avatar
Martin Dráb
Tvůrce
Avatar
Odpovídá na Bimbo
Martin Dráb:22.3.2016 0:30

Spíš mi to přijde, že je problém v konverzi floatu na řetězec, i třeba té implicitní (pro tebe), kterou bude provádět Serial.print.

Řekl bych, že jinak bude float vypadat stejně, ať už ho inicializuješ hodnotou 22.20 nebo 22.2. Nebo když napíšeš

float a = 22.2;

tak to nevypisuje tu nulu?

Nahoru Odpovědět
22.3.2016 0:30
2 + 2 = 5 for extremely large values of 2
Avatar
Bimbo
Člen
Avatar
Bimbo:23.3.2016 7:05

Hm, mate pravdu

Serial.begin(9600);
float a = 22.2;
Serial.print(a);

Vypisuje to 22.20 :-(

 
Nahoru Odpovědět
23.3.2016 7:05
Avatar
Majo Strba
Člen
Avatar
Majo Strba:23.3.2016 8:48

Mne to takto funguje

Serial.print(a, 1);
 
Nahoru Odpovědět
23.3.2016 8:48
Avatar
jnko
Člen
Avatar
Odpovídá na Bimbo
jnko:27.3.2019 19:38

Ahoj, zkus tato 2 řešení.
int a=5;
float b = 7;

b = float (a);
b = b - a + 0.49; // 0.49=dolu, 0.5=nahoru
if (b >= 0.5)
a=a+1;
xxxxxxxxxxxxx­xxxxxxxxx
float b = 7.5; // 7.49=dolu, 7.5=nahoru
b=float(int(b+0­.5));

 
Nahoru Odpovědět
27.3.2019 19:38
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.