Article View: be.comp.programming
Article #13209Re: newbie Java vraag ivm wiskundige functies
From: Pastoor Walter
Date: Sun, 19 Aug 2001 20:48
Date: Sun, 19 Aug 2001 20:48
53 lines
2906 bytes
2906 bytes
Op 19 aug 2001 schreef Joris Janssens: > Voor een mens is het oneindige lus, maar computers zijn iets minder > nauwkeurig als het op berekeningen aankomt met getallen met een > vlottende komma. Na 64 keer de lus doorlopen te hebben zal voor de > computer (x+1) gelijk zijn aan x (in Delphi, voor Visual Basic en Java > is het al na 53 keer). Met welke taal / datatype / op welk systeem haal je dan 64 ? > > Dit is de waarde voor x waarbij x=x+1 > 1,84467440737095516E+19 oftewel 2 ^ 64 (da leest makkelijker :-) > > Iemand met verstand van datatypes kan je dit allicht uitgebreider en > meer in detail uitleggen... > (Nu gaan we kijken of die cursussen aritmetiek bij mij opgebracht hebben) Floating point getallen bestaan uit een mantisse en een exponent (mantisse is het kommagedeelte, exponent spreekt voor zich) Volgens de floating point normalisatie regels ziet het getal er dan zo uit Mantisse = 1, Exponent = 64 (exponent basis is 2) nu wil je bij dit getal 1 toevoegen dus dat is ... Mantisse = 1, Exponent = 0 maar oeps ... om 2 getallen te kunnen optellen moeten ze dezelfde exponent hebben, dus we doen een aanpassing aaan het kleinste getal (we trachten het te herschrijven), en we shiften de Mantisse (64 bits) naar achter dus M = 0.0000000000000......001 (63 nullen) Exponent = 64 (Dus eigenlijk hetzelfde getal, maar in een andere voorstelling) Maar helaas wat gaat er fout ? Voor de mantisse hebben we maar 64 / 53 bits en dus ... 1 bit te weinig om het getal met de gegeven precisie te kunnen voorstellen. Conclusie in mensentaal: de computer kiepert die 1 weg omdat het ander getal simpelweg te groot is. Ziezo, diegenen die nog wakker zijn mogen controleren of het juist is ;-) -- PW Vrede op aarde aan allen van goede wil.
Technical Details
Message-ID:
<Xns9102E82E8809pastoorwalter@195.130.132.65>Path:
arc1-ca.pugleaf.net!archiver1.google.com!newsfeed.google.com!sn-xit-02!supernews.com!isdnet!skynet.be!skynet.be!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mailReferences:
<OwDe7.1310$6x5.420398@afrodite.telenet-ops.be> <9ln7d7$6kd$1@news.planetinternet.be> <aRUf7.6962$6x5.1970728@afrodite.telenet-ops.be>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit X-Google-Thread: fcea4,2c00ebb7e553e354 X-Google-Attributes: gidfcea4,public X-Google-ArrivalTime: 2001-08-19 13:48:43 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!newsfeed.google.com!sn-xit-02!supernews.com!isdnet!skynet.be!skynet.be!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mail Newsgroups: be.comp.programming Subject: Re: newbie Java vraag ivm wiskundige functies From: Pastoor Walter <pleaseusethe@replyto.address> References: <OwDe7.1310$6x5.420398@afrodite.telenet-ops.be> <9ln7d7$6kd$1@news.planetinternet.be> <aRUf7.6962$6x5.1970728@afrodite.telenet-ops.be> Organization: Telenjet ?? Message-ID: <Xns9102E82E8809pastoorwalter@195.130.132.65> User-Agent: Xnews/4.06.22 X-Microsoft: sucks X-BillGates: is an asshole Reply-To: pastoorwalter@hotmail.com Lines: 53 Date: Sun, 19 Aug 2001 20:48:40 GMT NNTP-Posting-Host: 213.224.153.28 X-Complaints-To: abuse@pandora.be X-Trace: afrodite.telenet-ops.be 998254120 213.224.153.28 (Sun, 19 Aug 2001 22:48:40 MET DST) NNTP-Posting-Date: Sun, 19 Aug 2001 22:48:40 MET DST