Pagina 1 van 1

[OPGELOST] Fout bij Sommeren.

BerichtGeplaatst: za aug 27, 2011 7:11 pm
door LeoDeWeerdt
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 

Re: Fout bij Sommeren.

BerichtGeplaatst: za aug 27, 2011 7:38 pm
door RPG
Hallo

Ik denk dat je de vraag moet verduidelijken.

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.

Romke

Re: Fout bij Sommeren.

BerichtGeplaatst: ma aug 29, 2011 10:49 am
door LeoDeWeerdt
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?

Re: Fout bij Sommeren.

BerichtGeplaatst: ma aug 29, 2011 11:43 am
door RPG
Hallo

Menu --> Extra --> opties

Dan LibreOffice --> Calc --> Berekenen --> Precisie zoals weergegeven.

Ik weet niet of het een oplossing is voor jouw probleem.

Romke

Re: Fout bij Sommeren.

BerichtGeplaatst: ma aug 29, 2011 1:28 pm
door LeoDeWeerdt
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".

Re: Fout bij Sommeren.

BerichtGeplaatst: ma aug 29, 2011 5:18 pm
door RPG
Hallo

Een verder vervolg is aan jou. Het vervolg zou kunnen zijn een andere manier van oplossen van jouw probleem.

Romke

Re: Fout bij Sommeren.

BerichtGeplaatst: ma aug 29, 2011 6:37 pm
door floris v
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.

Re: Fout bij Sommeren.

BerichtGeplaatst: di aug 30, 2011 10:49 am
door LeoDeWeerdt
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?

Re: Fout bij Sommeren.

BerichtGeplaatst: di aug 30, 2011 10:56 am
door floris v
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.

Re: Fout bij Sommeren.

BerichtGeplaatst: di aug 30, 2011 11:01 am
door LeoDeWeerdt
floris v,
Dank voor de snelle reactie. Dat is inderdaad de oplossing. Dat ik daar niet aan gedacht heb..

Re: OPGELOST Fout bij Sommeren.

BerichtGeplaatst: di aug 30, 2011 12:23 pm
door floris v
Dat leer je bij cursussen programmeren, het ligt niet echt voor de hand. Voel je dus niet bezwaard.