PelleP Skrevet 30. april 2009 Del Skrevet 30. april 2009 Jeg jobber med en oppgave hvor programmet skal summere noen verdier med en desimal. Resultene stemmer i de fleste tilfeller, men noen ganger så blir det en miljondel feil. Det er en dobule varible. Kan noen være så snill å forklare dette? Lenke til kommentar
x871kx6167ss7 Skrevet 30. april 2009 Del Skrevet 30. april 2009 (endret) Double følger IEEE 754-standaren og bruker 64 bit for å representere flyttall. Det er rett og slett begrensninger i hvor nøyaktig de reelle tallene kan representeres med et fast antall bit. Dersom du ønsker å forstå hvordan double representerer tall kan du lese her: http://en.wikipedia.org/wiki/Double_precision Double bruker disse bitene: 1 bit for å fortelle om det er et negativt eller positivt tall. 11 bit for å angi eksponenten 52 bit for å angi metisse. Og de brukes på denne måten: hvor x-ene er metisse og y-ene er eksponenten. Endret 30. april 2009 av Blackslash Lenke til kommentar
PelleP Skrevet 30. april 2009 Forfatter Del Skrevet 30. april 2009 Javel! Da er det ikke noen feil i programmet! Jeg får bare begrense utskriften til 1 desimal, selv om det egentlig ikke burde finnes mer en én desimal i utgangspunktet. Takk! Lenke til kommentar
pgdx Skrevet 30. april 2009 Del Skrevet 30. april 2009 (endret) Floating point accuracy problems. Det er forventet at enhver programmerer kjenner til denne problemstillingen, så det er like greit å lære det nå først som siden. Endret 30. april 2009 av pgdx Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå