Betreft: Mandriva 2010.2 OOo Calc.
De som van een reeks getallen (84) met 2 cijfers na de komma geeft als resultaat 4845,29000000001. Het gevolg daarvan is dat ik in de controlemacro een foutmelding krijg. Wie weet hier een oplossing voor?.
Edit: RPG: Sommeren aangepast
Laatst gewijzigd door floris v op di aug 30, 2011 12:25 pm, 2 keer totaal gewijzigd.
Reden:Als opgelost gemarkeerd
Leo Het is voor mij een grote troost dat er geen domme vragen zijn.
BASIC kan niet overweg met een string wat een getal voorstelt waarin een komma staat. BASIC verwacht een punt.
Voor floating point waardes moet je nooit verwachten dat ze precies gelijk zijn test eventueel of het verschil binnen de grenzen ligt. Getallen in Calc zijn altijd floating point waardes en het maakt niet uit hoe ze getoond worden.
RPG, Dank voor het snelle antwoord.
Ter verduidelijking: Het betreft het maken van de som, in dezelfde kolom (C), van een reeks getallen ("Number" geformatteerd - geen "String") met 2 cijfers na de komma.
Het resultaat is dan = 4845,29000000001000 (display met 14 cijfers na de komma.)
Als ik alle getallen eerst vermenigvuldig met 100, de som maak en dan terug delen door 100 krijg ik het juiste resultaat = 4845,00000000000000 (display met 14 cijfers na de komma.)
Dat is een zeer omslachtige methode om het probleem op te lossen. Mijn vraag is of er geen handigere oplossing is?
Leo Het is voor mij een grote troost dat er geen domme vragen zijn.
RPG, Heb uw raadgeving gevolgd, maar geen verbetering.
Ik heb OOo versie 3.2.1 en heb de volgende stappen gedaan: "Tools - Options - + van OpenOffice.org Calc - Calculate" en dan een kruisje gezet voor "Precision as shown".
Leo Het is voor mij een grote troost dat er geen domme vragen zijn.
Wat is hier de bedoeling? Wat heeft het voor zin om 14 decimalen te tonen als er maar 2 zijn? Bedenk verder dat een computer (en ook een rekenmachine) rekent met het tweetallige stelsel terwijl wij rekenen met het tientallige. Helaas - eindige tiendelige breuken zoals 1/10 kunnen niet als eindige tweedelige breuk worden weergegeven omdat 10 geen deler is van een macht van 2. Er wordt dus altijd ergens afgerond en dat is waarschijnlijk wat u hier te zien hebt gekregen. Als de getallen echt op 2 cijfers moeten worden afgerond voordat er verder mee wordt gerekend, moet u dat ook doen, het rekenblad doet het niet.
floris v
In een macro vergelijk ik, ter controle, het resultaat van twee verschillende berekening die hetzelfde resultaat (getal met 2 cijfers na de komma) moeten geven. Dat doe ik met een "If...Then...End" functie. het resultaat geeft de volgende foutbericht:
"Details: 4.825,29000000001"
"Summary: 4.845,29"
Alle getallen worden met het toetsenbord ingegeven dus geen berekende getallen.
Door vóór de controle de resultaatgetallen te beperken tot 2 cijfers na de komma krijg ik geen foutbericht meer.
Maar hoe kan ik dat in mijn macro insluiten?
Laatst gewijzigd door LeoDeWeerdt op di aug 30, 2011 10:56 am, 1 keer totaal gewijzigd.
Leo Het is voor mij een grote troost dat er geen domme vragen zijn.
Dit is een typisch voorbeeld van fout denken bij rekenen met floating-pointgetallen. De vaste regel daarbij is dat je niet moet testen of twee getallen aan elkaar gelijk zijn maar of het verschil kleiner is dan een bepaalde waarde. Dus komt in plaats van de test A = B de test ABS(A - B) < TOLERANTIE; waarbij je voor TOLERANTIE een waarde als 0.0005 kiest.