[OPGELOST] Fout bij Sommeren.

[OPGELOST] Fout bij Sommeren.

Berichtdoor LeoDeWeerdt » za aug 27, 2011 7:11 pm

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 bijgewerkt door floris v op di aug 30, 2011 12:25 pm, in totaal 2 keer bewerkt.
Reden: Als opgelost gemarkeerd
Leo
Het is voor mij een grote troost dat er geen domme vragen zijn.
LeoDeWeerdt
 
Berichten: 41
Geregistreerd: wo jan 06, 2010 4:26 pm

Re: Fout bij Sommeren.

Berichtdoor RPG » za aug 27, 2011 7:38 pm

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 6.2.5.2 op openSUSE Leap 15.1
RPG
 
Berichten: 4027
Geregistreerd: wo apr 15, 2009 1:01 am
Woonplaats: Apeldoorn, Nederland

Re: Fout bij Sommeren.

Berichtdoor LeoDeWeerdt » ma aug 29, 2011 10:49 am

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.
LeoDeWeerdt
 
Berichten: 41
Geregistreerd: wo jan 06, 2010 4:26 pm

Re: Fout bij Sommeren.

Berichtdoor RPG » ma aug 29, 2011 11:43 am

Hallo

Menu --> Extra --> opties

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

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

Romke
LibreOffice 6.2.5.2 op openSUSE Leap 15.1
RPG
 
Berichten: 4027
Geregistreerd: wo apr 15, 2009 1:01 am
Woonplaats: Apeldoorn, Nederland

Re: Fout bij Sommeren.

Berichtdoor LeoDeWeerdt » ma aug 29, 2011 1:28 pm

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.
LeoDeWeerdt
 
Berichten: 41
Geregistreerd: wo jan 06, 2010 4:26 pm

Re: Fout bij Sommeren.

Berichtdoor RPG » ma aug 29, 2011 5:18 pm

Hallo

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

Romke
LibreOffice 6.2.5.2 op openSUSE Leap 15.1
RPG
 
Berichten: 4027
Geregistreerd: wo apr 15, 2009 1:01 am
Woonplaats: Apeldoorn, Nederland

Re: Fout bij Sommeren.

Berichtdoor floris v » ma aug 29, 2011 6:37 pm

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.6 op Linux Mint
* Heb je de survival guide voor het forum al gelezen?
Avatar gebruiker
floris v
 
Berichten: 1968
Geregistreerd: za apr 11, 2009 3:30 pm
Woonplaats: Apeldoorn, Nederland

Re: Fout bij Sommeren.

Berichtdoor LeoDeWeerdt » di aug 30, 2011 10:49 am

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 bijgewerkt door LeoDeWeerdt op di aug 30, 2011 10:56 am, in totaal 1 keer bewerkt.
Leo
Het is voor mij een grote troost dat er geen domme vragen zijn.
LeoDeWeerdt
 
Berichten: 41
Geregistreerd: wo jan 06, 2010 4:26 pm

Re: Fout bij Sommeren.

Berichtdoor floris v » di aug 30, 2011 10:56 am

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.6 op Linux Mint
* Heb je de survival guide voor het forum al gelezen?
Avatar gebruiker
floris v
 
Berichten: 1968
Geregistreerd: za apr 11, 2009 3:30 pm
Woonplaats: Apeldoorn, Nederland

Re: Fout bij Sommeren.

Berichtdoor LeoDeWeerdt » di aug 30, 2011 11:01 am

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.
LeoDeWeerdt
 
Berichten: 41
Geregistreerd: wo jan 06, 2010 4:26 pm

Re: OPGELOST Fout bij Sommeren.

Berichtdoor floris v » di aug 30, 2011 12:23 pm

Dat leer je bij cursussen programmeren, het ligt niet echt voor de hand. Voel je dus niet bezwaard.
* AOO 4.1.6 op Linux Mint
* Heb je de survival guide voor het forum al gelezen?
Avatar gebruiker
floris v
 
Berichten: 1968
Geregistreerd: za apr 11, 2009 3:30 pm
Woonplaats: Apeldoorn, Nederland


Keer terug naar Macro's

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers. en 1 gast