Computerarithmetiek

In veel programmeertalen is de vergelijking 0.1 + 0.2 == 0.3 bij dubbele precisie onwaar. Wat is hiervoor de juiste reden?

  1. ADe optelinstructie kan decimale getallen soms niet correct optellen
  2. B0,3 is een bijzondere waarde die niet als drijvendekommagetal kan worden weergegeven, zodat de vergelijking altijd onwaar is
  3. CAlle drie worden door afgeronde, nabije waarden weergegeven en verschillen door fouten licht van waarde
Antwoord en toelichting tonen

Antwoord: C. Alle drie worden door afgeronde, nabije waarden weergegeven en verschillen door fouten licht van waarde

0,1, 0,2 en 0,3 kunnen alle drie niet exact binair worden weergegeven en worden afgerond op de dichtstbijzijnde waarde. De som van de benaderingen van 0,1 en 0,2, afgerond, is 0.30000000000000004 en komt in het laatste cijfer niet overeen met de benadering van 0,3, 0.29999999999999998… Daarom worden drijvendekommagetallen gewoonlijk vergeleken door te toetsen of het absolute verschil kleiner is dan of gelijk is aan een kleine tolerantie. De optelinstructie rondt volgens de norm correct af en ook 0,3 is als benadering weer te geven.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Computerarithmetiek

  1. Wat is de machine-epsilon (het verschil tussen 1 en het eerstvolgende weer te geven getal groter dan 1) bij IEEE 754 met enkele precisie?
  2. Welke combinatie geeft het aantal betrouwbare decimale significante cijfers van drijvendekommagetallen met enkele en dubbele precisie juist weer?
  3. Wat is de juiste rol van gedenormaliseerde getallen (subnormale getallen) in IEEE 754?
  4. Bij berekeningen met veel gedenormaliseerde getallen kan de verwerking op sommige processors sterk vertragen. Welke instelling wordt daarom gebruikt wanneer prestaties voorrang hebben?
  5. Wat is het resultaat dat de norm voorschrijft wanneer bij drijvendekommabewerkingen volgens IEEE 754 een positief getal door 0 wordt gedeeld?