Select the product you need help with
Berekeningen met drijvende komma geven onnauwkeurige resultaten in ExcelArtikel ID: 78113 - Bekijk de producten waarop dit artikel van toepassing is. Op deze paginaSamenvatting In dit artikel wordt beschreven hoe Microsoft Excel getallen met drijvende komma's opslaat en berekent. Dit kan invloed hebben op de resultaten van enkele getallen of formules als gevolg van afronden en/of afkappen van gegevens. OverzichtMicrosoft Excel is voor wat het opslaan en het berekenen van getallen met drijvende komma's aangaat, ontworpen op basis van de IEEE 754-specificatie. IEEE is het Institute of Electrical and Electronics Engineers, een internationaal orgaan dat onder andere normen bepaalt voor computersoftware en -hardware. De 754-specificatie is een op grote schaal aangenomen specificatie waarin wordt beschreven hoe getallen met drijvende komma's in een binaire computer moeten worden opgeslagen. De specificatie is populair omdat deze een methode biedt waarbij getallen met drijvende komma's op een redelijke hoeveelheid ruimte worden opgeslagen en berekeningen relatief snel worden uitgevoerd. De 754-norm wordt gebruikt in de processors met drijvende-komma-eenheden en numerieke gegevens van bijna alle huidige pc-microprocessors die drijvende-kommaberekeningen implementeren, zoals Intel-, Motorola-, Sun- en MIPS-processors.Bij de opslag van getallen kan elk getal of elke breuk worden weergegeven door een corresponderend binair getal. De breuk 1/10 kan in een systeem met decimale getallen bijvoorbeeld worden weergegeven met een eenvoudig decimaal getal, zoals 0,1. Hetzelfde getal wordt in een binaire indeling echter een herhalende binaire decimaal 0001100110011100110011 (enzovoort) en kan een oneindig aantal keren worden herhaald. Dit getal kan niet worden weergegeven in een eindige (beperkte) ruimte. Het getal wordt daarom met ongeveer ?2,8E-17 naar beneden afgerond wanneer het wordt opgeslagen.Er zijn echter enkele beperkingen van de IEEE 754-specificatie die in drie algemene categorieën kunnen worden onderverdeeld:
Meer informatieMaximum/minimumbeperkingenAlle computers hebben een hoogste en laagste getal waarmee kan worden gewerkt. Omdat het aantal geheugenbits waarin het getal wordt opgeslagen, eindig is, betekent dit dat het hoogste of laagste getal dat kan worden opgeslagen, ook eindig is. Voor Excel is 1,79769313486232E+308 het grootste getal dat kan worden opgeslagen, en is 2,2250738585072E-308 het kleinste positieve getal dat kan worden opgeslagen.Gevallen waarin IEEE 754 wordt gehanteerd
Gevallen waarin we ons niet houden aan IEEE 754
PrecisionEen drijvende-kommagetal wordt binair in drie delen binnen een 65-bits bereik opgeslagen: het teken, de exponent en de mantisse.Deze tabel samenvouwen
De mantisse en de exponent worden als afzonderlijke componenten opgeslagen. De mate van precisie die mogelijk is, is dus afhankelijk van de grootte van het getal (de mantisse) dat wordt gemanipuleerd. Hoewel Excel getallen kan opslaan van 1,79769313486232E308 tot 2,2250738585072E-308, is dit in Excel echter alleen mogelijk binnen een precisie van 15 cijfers. Deze beperking is een direct gevolg van een strikte naleving van de IEEE 754-specificatie. Het is geen beperking van Excel. Deze mate van precisie komt ook in andere spreadsheetprogramma's voor. Drijvende-kommagetallen worden weergegeven in de volgende notatie, waarbij exponent de binaire exponent is: X = Breuk * 2^(exponent - bias) Breuk is het genormaliseerde fractionele gedeelte van het getal, dat wil zeggen, genormaliseerd omdat het zodanig is aangepast dat de voorloopbit altijd een 1 is. Op die manier hoeft deze niet te worden opgeslagen, wat weer één bit extra precisie oplevert. Daarom is er een impliciete bit. Dit komt overeen met de wetenschappelijke notatie, waar u de exponent zo manipuleert dat deze één cijfer links van het decimaalteken heeft. Met uitzondering van binaire getallen, kunt u de exponent altijd zodanig manipuleren dat de eerste bit een 1 is, omdat er alleen enen en nullen zijn.Bias is de bias-waarde die wordt gebruikt om de opslag van negatieve exponenten te vermijden. De bias voor getallen met enkele precisie is 127 en 1,023 (decimaal) voor getallen met dubbele precisie. In Excel worden getallen met dubbele precisie opgeslagen. Voorbeeld met zeer grote getallenVoer het volgende in een nieuwe werkmap in:A1: 1,2E+200 B1: 1E+100 C1: =A1+B1 Voorbeeld met zeer kleine getallenVoer het volgende in een nieuwe werkmap in:A1: 0.000123456789012345 B1: 1 C1: =A1+B1 Precisiefouten corrigerenExcel biedt twee basismethoden om afrondingsfouten te compenseren: de functie AFRONDEN en de werkmapoptie Precisie zoals afgebeeld of Precisie instellen zoals weergegeven.Methode 1: De functie AFRONDENIn het volgende voorbeeld worden de hierboven vermelde gegevens gebruikt om met behulp van de functie AFRONDEN een getal te beperken tot vijf cijfers. Op deze manier kunt u het resultaat met een andere waarde vergelijken.A1: 1,2E+200 B1: 1E+100 C1: =AFRONDEN(A1+B1,5) geeft als resultaat 1,2E+200. D1: =ALS(C1=1,2E+200; WAAR; ONWAAR) resulteert in de waarde WAAR. Methode 2: Precisie zoals afgebeeldIn sommige gevallen kunt u voorkomen dat afrondingsfouten in getallen met drijvende komma invloed op uw werk hebben door de optie Precisie zoals afgebeeld te gebruiken. Met deze optie wordt de waarde van elk getal in het werkblad ingesteld op de weergegeven waarde. Ga als volgt te werk om deze optie in te schakelen:
Herhalende binaire getallen en berekeningen met resultaten die nul benaderenEen ander verwarrend probleem bij de binaire opslag van getallen met drijvende komma, is dat sommige getallen die in het decimale talstelsel eindige, niet-herhalende getallen zijn, na binaire opslag oneindige, herhalende getallen zijn geworden. Het meest voorkomende voorbeeld hiervan is de waarde 0,1 en varianten daarvan. Hoewel deze getallen in het decimale talstelsel perfect kunnen worden weergegeven, wordt hetzelfde getal in binaire notatie het volgende herhalende binaire getal wanneer het in de mantisse wordt opgeslagen:000110011001100110011 (enzovoort) De IEEE 754-specificatie kent geen speciale voorziening voor elk getal. Er wordt zoveel mogelijk in de mantisse opgeslagen en de rest wordt afgekapt. Dit resulteert bij opslag in een fout van ongeveer -2,8E-17 of 0,000000000000000028.Zelfs veelvoorkomende decimale breuken, zoals de decimale waarde 0,0001, kunnen binair niet exact worden weergegeven. (0,0001 is een herhalende binaire fractie met een decimaalteken van 104 bits). Om dezelfde reden kan de breuk 1/3 decimaal niet exact worden weergegeven (een herhalende 0,33333333333333333333). Dit verklaart waarom een eenvoudig voorbeeld in Microsoft Visual Basic for Applications Voorbeeld van het optellen van een negatief getal
Voorbeeld van een waarde die nul benadert
In Excel 97 is echter een verbetering opgenomen waarmee dit probleem mogelijk kan worden opgelost. Als een optelling of aftrekking een waarde oplevert die nul zeer dicht benadert, wordt een fout die het gevolg is van de conversie van een operand naar en van binair, in Excel 97 en nieuwere versies gecompenseerd. Als het bovenstaande voorbeeld wordt gebruikt in Excel 97 of hoger, wordt de waarde 0 of de waarde 0,000000000000000E+00 in wetenschappelijke notatie correct weergegeven. Klik voor meer informatie op de volgende artikelnummers in de Microsoft Knowledge Base: 172911
(http://support.microsoft.com/kb/172911/
)
Onjuist resultaat bij verhogen van 10 tot zeer grote/kleine macht (Het Engels)214373 Voor meer informatie over getallen met drijvende komma en de IEE 754-specificatie raadpleegt u de volgende websites van het World Wide Web Consortium:
(http://support.microsoft.com/kb/214373/
)
Onjuist resultaat bij verhogen van 10 tot zeer grote/kleine macht (Het Engels)http://www.ieee.org
(http://www.ieee.org)
http://stevehollasch.com/cgindex/coding/ieeefloat.html
(http://stevehollasch.com/cgindex/coding/ieeefloat.html)
Referenties Als u meer informatie wilt over het omzeilen van deze fouten, klikt u op het volgende artikelnummer in de Microsoft Knowledge Base: 214118
(http://support.microsoft.com/kb/214118/
)
Afrondingsfouten in rekenkundige bewerkingen met drijvende komma corrigeren (Het Engels)EigenschappenArtikel ID: 78113 - Laatste beoordeling: zondag 18 september 2011 - Wijziging: 2.0 De informatie in dit artikel is van toepassing op:
| Vertaalde artikelen
|


Naar boven








