Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

skracivanje float na dve decimale na lcd-u

[es] :: Elektronika :: Mikrokontroleri :: skracivanje float na dve decimale na lcd-u

[ Pregleda: 2301 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mst.petrovic
milos petrovic
student
nis

Član broj: 256875
Poruke: 47
*.adsl-a-3.sezampro.rs.



+1 Profil

icon skracivanje float na dve decimale na lcd-u31.08.2014. u 08:30 - pre 116 meseci
pozdarv svima,
imam problem koji je mozda vama smesan ali meni nije...
Kako da promenljivu tipa float koju lcd prikazuje kao 3.499999 prikazem kao 3.49 (nebitno mi je zaokruzivanje). Koristim mikro C.
unapred hvala!!!

[Ovu poruku je menjao mst.petrovic dana 31.08.2014. u 11:26 GMT+1]
mst
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.dynamic.sbb.rs.

Sajt: mysql.rs


+2377 Profil

icon Re: skracivanje float na dve decimale na lcd-u31.08.2014. u 10:30 - pre 116 meseci
Code:

float x;

...
x = (float)((int)x*100) / 100.0F; //x je sad zaokruzena na 2 decimale
...



proveri da li mikroC printf ima mogucnost da formatira float izlaz
u normalnom C-u mozes da uradis

Code:

printf("%.2f\n", x);


i on ce ti prikazati samo 2 decimale
 
Odgovor na temu

mst.petrovic
milos petrovic
student
nis

Član broj: 256875
Poruke: 47
*.adsl-a-3.sezampro.rs.



+1 Profil

icon Re: skracivanje float na dve decimale na lcd-u31.08.2014. u 10:36 - pre 116 meseci
Bogdane,
hvala ti na odgovoru, od tebe sam ga i ocekivao... :D!!!

jedini problem je sto printf ne mogu da napisem u mikroc-u.
mst
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.com
Via: [es] mailing liste

Sajt: mysql.rs


+2377 Profil

icon Re: skracivanje float na dve decimale na lcd-u31.08.2014. u 10:53 - pre 116 meseci
ako ne radi printf u mikroc-u radi ti prvi primer kako da iseces
varijablu na samo 2 cifre posle decimalne tacke
 
Odgovor na temu

mst.petrovic
milos petrovic
student
nis

Član broj: 256875
Poruke: 47
*.adsl-a-3.sezampro.rs.



+1 Profil

icon Re: skracivanje float na dve decimale na lcd-u31.08.2014. u 11:09 - pre 116 meseci
Bogdane,
evo ga deo koda koji je sporan. i dalje nece da radi... posle ovoga meni izbaci samo broj 3

Code:

char *value_pd="000";
float pdp=3.5,pdps=0;
/************************ovo je deo rutine za menjanje vrednosti enkodera 

if(count1>7)
            {
              pdp=pdp+0.1;                  // uvecaj za 0.1
              count1=6;
            }
             if(count1<5)
            {
              pdp=pdp-0.1;                  // umanii za 0.1
              count1=6;
            }
/*****************************

pdps = (float)((int)pdp*100) / 100.0F; //x je sad zaokruzena na 2 decimale
FloatToStr(pdps,value_pd);
Lcd_out(3,10,value_pd );


mst
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.com
Via: [es] mailing liste

Sajt: mysql.rs


+2377 Profil

icon Re: skracivanje float na dve decimale na lcd-u31.08.2014. u 11:13 - pre 116 meseci
dodaj jos jedne zagrade

pdps = (float)((int)(pdp*100)) / 100.0F;
 
Odgovor na temu

mst.petrovic
milos petrovic
student
nis

Član broj: 256875
Poruke: 47
*.adsl-a-3.sezampro.rs.



+1 Profil

icon Re: skracivanje float na dve decimale na lcd-u31.08.2014. u 11:35 - pre 116 meseci

mst
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.dynamic.sbb.rs.

Sajt: mysql.rs


+2377 Profil

icon Re: skracivanje float na dve decimale na lcd-u31.08.2014. u 11:35 - pre 116 meseci
taj video ti je private

 
Odgovor na temu

mst.petrovic
milos petrovic
student
nis

Član broj: 256875
Poruke: 47
*.adsl-a-3.sezampro.rs.



+1 Profil

icon Re: skracivanje float na dve decimale na lcd-u31.08.2014. u 11:40 - pre 116 meseci
sada nije...
mst
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.dynamic.sbb.rs.

Sajt: mysql.rs


+2377 Profil

icon Re: skracivanje float na dve decimale na lcd-u31.08.2014. u 12:00 - pre 116 meseci
mikroC je tu bas $%#@%@!#$ ... sta da ti kazem ... moraces onda malo drugacije

Code:


int TEMP;

char *value_pd="000";
float pdp=3.5,pdps=0;
/************************ovo je deo rutine za menjanje vrednosti enkodera 

if(count1>7)
            {
              pdp=pdp+0.1;                  // uvecaj za 0.1
              count1=6;
            }
             if(count1<5)
            {
              pdp=pdp-0.1;                  // umanii za 0.1
              count1=6;
            }
/*****************************


TEMP = pdp*100;
pdps = TEMP / 100.0F;
FloatToStr(pdps,value_pd);
Lcd_out(3,10,value_pd );

 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.dynamic.sbb.rs.

Sajt: mysql.rs


+2377 Profil

icon Re: skracivanje float na dve decimale na lcd-u31.08.2014. u 12:02 - pre 116 meseci
btw float je uzasno spor i uzima uzasno mnogo flash-a .. posebno kod mikroC koji to radi prilicno "nogama" .. razmisli da sta god tu radis predjes u int racunicu ..
izracunas u odnosu na to sto radis kolika ti je tacnost potrebna i sve racunas sa intovima * neka vrednost .. ja na primer za temperaturu gde mi je 2 decimale dovoljna tacnost racunam sve u *1000 .. imas full int math koji je extra brz i trosi nista flash-a i samo krajnje vrednosti koristis tako sto znas da su *1000 u odnosu na pravu vrednost ..
 
Odgovor na temu

mst.petrovic
milos petrovic
student
nis

Član broj: 256875
Poruke: 47
*.adsl-a-3.sezampro.rs.



+1 Profil

icon Re: skracivanje float na dve decimale na lcd-u31.08.2014. u 12:08 - pre 116 meseci
ok,
mislim da si u pravu... imao sam to resenje na pocetku ali sam hteo da ga resim preko floata... izgleda da sam mnogo tvrdoglav... vracam se na int
hvala puno!!!
mst
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.com
Via: [es] mailing liste

Sajt: mysql.rs


+2377 Profil

icon Re: skracivanje float na dve decimale na lcd-u31.08.2014. u 12:17 - pre 116 meseci
float je super ako ga podrzava mcu. softwerska float implementacija nije
problem, poznata je i prezvakana mnogo puta, biblioteke su free i vecina
kompajlera ih koristi as-is, problem je sto tu nema nikakve optimizacije
i to je na samom kompajleru da odradi, mikroC to ne ume .. (nije ni XC8
nista bolji po tom pitanju, ali bar ime da isparsira onu liniju kako
treba). e sad, nekad ti je neophodan full float support i u tom slucaju
zagrizes i iskoristis isti ali najcesce ti ne treba float i onda je
bolje da ga samo izsimuliras.. kod mikroC je jos posebno smor sto on ne
ume da izbaci delove koda koji se ne koriste tako da i malo koristenje
float-a uvuce celu ieee754 biblioteku .. no ako se dobro secam jos su je
nesto oni budzili pa zapis nije ieee754 vec "malo" drugaciji .. ne znam
sta bi ti rekao, mnogo mi je draga ta firma ali mi taj kompajler ide na
ganglije sve vise kako prolazi vreme ... mcp je isto smorio sa xc8 a
izgleda su u novijim verzijama upropastili i xc16 i xc32 .. sva sreca da
sam na vreme pobegao skroz sa pic platforme .. sto se kompajlera tice
atmel je milion puta bolji/otvoreniji .. sad jbg ja i dalje mislim da je
mcp zgodniji sto se hw-a i dostupnosti tice ... mrka kapa .. gde god
krenes ako ne ides sa puno para kostace te ko svetog petra kajgana ..

u svakom slucaju, onako kako sam ti napisao (sa TEMP int promenjljivom)
to mora da radi ... e sad ti vidi, ako imas free mesta u flash-u i nije
ti oglavu za brzinu to ce da radi ... ako ti ponestane flash-a ukini
float i odradi to sa intom
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: skracivanje float na dve decimale na lcd-u

[ Pregleda: 2301 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.