Geek tričko zdarma Geek tričko zdarma
Hledáme grafika na pohodovou brigádu v Blenderu nebo programátora na hry v PyGame. Máš zájem? Napiš nám na redakce [zavináč] itnetwork.cz!
Tričko zdarma! Stačí před dobitím bodů použít kód TRIKO15. Více informací zde
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
Redaktor
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
Redaktor
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
Redaktor
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
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Martin Dráb
Redaktor
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. března 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. března 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.