[OPGELOST] Fout bij Sommeren.

LeoDeWeerdt
Berichten: 41
Lid geworden op: wo jan 06, 2010 4:26 pm

[OPGELOST] Fout bij Sommeren.

Bericht 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 
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.
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: Fout bij Sommeren.

Bericht 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
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
LeoDeWeerdt
Berichten: 41
Lid geworden op: wo jan 06, 2010 4:26 pm

Re: Fout bij Sommeren.

Bericht 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?
Leo
Het is voor mij een grote troost dat er geen domme vragen zijn.
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: Fout bij Sommeren.

Bericht 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
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
LeoDeWeerdt
Berichten: 41
Lid geworden op: wo jan 06, 2010 4:26 pm

Re: Fout bij Sommeren.

Bericht 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".
Leo
Het is voor mij een grote troost dat er geen domme vragen zijn.
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: Fout bij Sommeren.

Bericht door RPG »

Hallo

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

Romke
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
Gebruikersavatar
floris v
Berichten: 2107
Lid geworden op: za apr 11, 2009 3:30 pm
Locatie: Apeldoorn, Nederland

Re: Fout bij Sommeren.

Bericht 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.
* AOO 4.1.11 en LibreOffice 7.6.1.2 op Ubuntu 20.x
* Heb je de survival guide voor het forum al gelezen?
LeoDeWeerdt
Berichten: 41
Lid geworden op: wo jan 06, 2010 4:26 pm

Re: Fout bij Sommeren.

Bericht 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?
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.
Gebruikersavatar
floris v
Berichten: 2107
Lid geworden op: za apr 11, 2009 3:30 pm
Locatie: Apeldoorn, Nederland

Re: Fout bij Sommeren.

Bericht 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.
* AOO 4.1.11 en LibreOffice 7.6.1.2 op Ubuntu 20.x
* Heb je de survival guide voor het forum al gelezen?
LeoDeWeerdt
Berichten: 41
Lid geworden op: wo jan 06, 2010 4:26 pm

Re: Fout bij Sommeren.

Bericht door LeoDeWeerdt »

floris v,
Dank voor de snelle reactie. Dat is inderdaad de oplossing. Dat ik daar niet aan gedacht heb..
Leo
Het is voor mij een grote troost dat er geen domme vragen zijn.
Gebruikersavatar
floris v
Berichten: 2107
Lid geworden op: za apr 11, 2009 3:30 pm
Locatie: Apeldoorn, Nederland

Re: OPGELOST Fout bij Sommeren.

Bericht door floris v »

Dat leer je bij cursussen programmeren, het ligt niet echt voor de hand. Voel je dus niet bezwaard.
* AOO 4.1.11 en LibreOffice 7.6.1.2 op Ubuntu 20.x
* Heb je de survival guide voor het forum al gelezen?
Plaats reactie