www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Racunska napaka ????

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
SimonS
Član
Član



Pridružen-a: Čet 01 Jul 2004 11:18
Prispevkov: 4769
Aktiv.: 20.13
Kraj: Kobarid

PrispevekObjavljeno: Sre Jan 31, 2007 9:23 pm    Naslov sporočila: icon_sad Racunska napaka ???? Odgovori s citatom

Hmm to mi pa nikakor ni vsec! Ko pozenem spodnji programcek mi namesto cistega pristevka 1 vsake toliko casa doda ali odbije kaksno decimalko. Npr. izpis na zaslonu trenutno je 120.011963 namesto 120.012000. Zna kdo pojasniti, kje nastane napaka? Zna biti zelo nadlezno pri kaksnih izracunih Evil or Very Mad No vsaj upam, da gre samo za napako pri izpisu (sprintf) in ne v neznaki...
Koda:
int main (void) {
  float ab;
  char datum[] = "31 januar 2006";
  char izpis[16];
  lcd_init();
 ab = 0.012;
  while (1) {                                               
     lcd_1_line();
     ab ++;
     sprintf(izpis,"%f",ab);      
      lcd_print(izpis);
      lcd_2_line();
     lcd_print(datum);
     udelay(1500);

  }
}

_________________
Lep dan
Simon
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Djurodrljaca
Član
Član



Pridružen-a: Pet 19 Dec 2003 16:31
Prispevkov: 393
Aktiv.: 1.66
Kraj: Mengeš

PrispevekObjavljeno: Sre Jan 31, 2007 9:29 pm    Naslov sporočila:   Odgovori s citatom

Problem je v tem, ker uporabljaš float. Pretvorba iz desetiškega zapisa števila v "floating point" zapis števila ni čisto točen, ampak si omejen z minimalnim številom, ki ga lahko prikažeš oz z njim računaš. Če hočeš boljšo natančnost uporabi double, ker ima zapis na 15 decimalnih mest točen, float pa je točen samo na 7 decimalnih mest.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Sokrat
Član
Član



Pridružen-a: Čet 25 Avg 2005 11:00
Prispevkov: 5584
Aktiv.: 23.56

PrispevekObjavljeno: Sre Jan 31, 2007 9:32 pm    Naslov sporočila:   Odgovori s citatom

Stevilski tipi ne-celih (sploh iracionalnih) stevil so v racunalniku z omejenim obsegom prostora za dolocen stevilski tip ponazorjeni priblizno; bolj kot rines v majhne decimalke, bolj je vrednost nenatancna. Ce zelis vecjo natancnost, uporabi drugacen tip ali stevilo predstavi drugace - v obeh primerih zagotovi dovolj prostora za celoten obseg tvojega stevilskega tipa. V takih primerih ponavadi tudi uporabis vnaprej doloceno mesto decimalne pike ("fixed point").
_________________
Ka ti bo pa torba ce si kupu kolo ?
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
.
Član
Član



Pridružen-a: Pon 23 Avg 2004 16:16
Prispevkov: 16777190
Aktiv.: 70800.82

PrispevekObjavljeno: Sre Jan 31, 2007 10:33 pm    Naslov sporočila:   Odgovori s citatom

Brisana vsebina odstranjenega uporabnika.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 495 dni


Powered by phpBB © 2001, 2005 phpBB Group