myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

[C++] Mehr Nachkommastellen

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 18.01.11, 14:27   #1
waldfee0071
Ist öfter hier
 
Benutzerbild von waldfee0071
 
Registriert seit: Nov 2009
Beiträge: 219
Bedankt: 189
waldfee0071 ist noch neu hier! | 0 Respekt Punkte
Standard [C++] Mehr Nachkommastellen

Im Moment mache ich mir den Spaß und versuche mich an der Mandelbrot-Menge.
[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]

An sich alles nicht das Problem, jedoch wird bei starkem Zoom die grenze des double Datentyps ziemlich ausgereizt. long double bietet auch nur auf 2-3 stellen höhere Genauigkeit. Ich möchte aber höhere Genauigkeit erzielen, also Rundungen möglichst vermeiden.

Allerdings fällt mir keine bessere Lösung ein, als eine Klasse dafür zu schreiben, die das übernehmen soll. Im Sinne von:

Code:
Beispiel:

wert = 2.567890
int n = 2567890
int i= 6 // anzahl nachkommastellen
das praktisch direkt bei der Rechnung der wert in 2 int werte aufgespalten wird, und im nachhinein mit 10erpotenzen die Kommastelle "nachträglich" hinzu gefügt wird. Ja, ich bin iwie schlecht im Dinge erklären ^^

Meine Frage: Gibt es eine einfachere möglichkeit dafür ? Man muss das Rad ja net immer neu erfinden, also kennt jmd eine Library, die eben diese Funktion übernimmt ?

Mfg Waldfee
waldfee0071 ist offline   Mit Zitat antworten
Ungelesen 18.01.11, 15:14   #2
germgerm
bla
 
Registriert seit: Mar 2010
Beiträge: 312
Bedankt: 302
germgerm ist noch neu hier! | 0 Respekt Punkte
Standard

Da googelst du am besten nach "Langzahlen-Arithmetik".
Ich kenne zB die Klassenbibliothek C-XSC.
germgerm ist offline   Mit Zitat antworten
Ungelesen 18.01.11, 15:42   #3
waldfee0071
Ist öfter hier
 
Benutzerbild von waldfee0071
 
Registriert seit: Nov 2009
Beiträge: 219
Bedankt: 189
waldfee0071 ist noch neu hier! | 0 Respekt Punkte
Standard

erstmal danke, doch auch mithilfe dieser library wirds nach ca. 20+ nachkommastellen ungenau.

Ich suche eher etwas, dass dann den CPU belastet und die rechenzeit höher wird, als an genau dem Punkt dann aufgrund von zeitersparniss abstriche zu machen
waldfee0071 ist offline   Mit Zitat antworten
Ungelesen 18.01.11, 16:22   #4
neffinator
Geschmack hadda
 
Registriert seit: Nov 2010
Beiträge: 77
Bedankt: 56
neffinator ist noch neu hier! | 0 Respekt Punkte
Standard

1. es gibt einige bibliotheken dafür
2. schreib es dir selber, jede ziffer ist ein int, die miteinander über pointer verbunden sind...praktisch n int-array
neffinator ist offline   Mit Zitat antworten
Ungelesen 18.01.11, 17:07   #5
tha_specializt
`
 
Registriert seit: Nov 2010
Ort: Zuhause
Beiträge: 142
Bedankt: 37
tha_specializt ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von waldfee0071 Beitrag anzeigen
long double bietet auch nur auf 2-3 stellen höhere Genauigkeit.
Äh ... nö. Long double hat mit gcc 80 Bit - der Unterschied zwischen 64 und 80 Bit ist enorm, nach all meinen Kenntnissen und meiner Vermutung nach ist alleine der Unterschied sogar größer als die der komplette Zahlenraum mit 64 Bit ... denn pro Bit steigt der Zahlenraum bzw. die Anzahl der möglichen Permutationen nicht linear - das mal so als Geheimtip

Also wenn long double nicht ausreicht bieten manche Compiler sogar long long double (ich weiss, klingt lächerlich) - sofern es nicht nur ein typedef auf long double ist haste da direkt mal 128 Bit. Und ... tut mir leid - wenn 128 Bit für dich nicht ausreichen dann versuchst du gerade die Anzahl aller Teilchen im Universum zu erfassen oder du spielst mit multidimensionaler Mathematik herum und suchst nen Beweis für die M-Theorie
Nun, bei Fliesskommazahlen geht eine gewisse Wortbreite verloren weil die Mantisse separat gespeichert werden muss ... in dieser Größenordnung (> 64 Bit) ändert das aber nich mehr spürbar viel
tha_specializt ist offline   Mit Zitat antworten
Ungelesen 18.01.11, 18:17   #6
waldfee0071
Ist öfter hier
 
Benutzerbild von waldfee0071
 
Registriert seit: Nov 2009
Beiträge: 219
Bedankt: 189
waldfee0071 ist noch neu hier! | 0 Respekt Punkte
Standard

long double hin oder her, ab nem gewissen zoom-grad gibt es ungenauigkeiten und kurz danach crash mit verletzung von zugriffsrechten beim speicher, die ich mir wohl gemerkt nicht erklären kann

ich fürchte ich muss den kram doch selber basteln, trotzdem danke an alle... bis auf neffinator, der nur klugscheißt xD

close plz
waldfee0071 ist offline   Mit Zitat antworten
Ungelesen 18.01.11, 18:21   #7
tha_specializt
`
 
Registriert seit: Nov 2010
Ort: Zuhause
Beiträge: 142
Bedankt: 37
tha_specializt ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von waldfee0071 Beitrag anzeigen
acrash mit verletzung von zugriffsrechten beim speicher
Das ist in 99,999999999999999999999999999999999999999999% aller Fälle ein Programmierfehler ... wenn ein Datentyp voll is läuft er über aber verursacht keine Crashs
tha_specializt ist offline   Mit Zitat antworten
Ungelesen 18.01.11, 18:59   #8
waldfee0071
Ist öfter hier
 
Benutzerbild von waldfee0071
 
Registriert seit: Nov 2009
Beiträge: 219
Bedankt: 189
waldfee0071 ist noch neu hier! | 0 Respekt Punkte
Standard

ja, merk ich auch gerade .... die variablen für die position der pixel fallen unter 1.0, deswegen wird versucht die gleichen pixel mehrfach zu berechnen/beschreiben .... ich glaub da muss ne routine her, die checkt, ob die schon beschrieben sind ^^ Oder ich belasse es enfach debei und schränke den zoom ein ... mein alter lappie rechnet an den "unteren" ebenen schon bis zu 20 sec :lol:

Das erklärt dann die Fehler im Bild und den daraus resultierenden crash ... trotzdem nochmal danke für den tipp mit dem long double ^^
waldfee0071 ist offline   Mit Zitat antworten
Ungelesen 02.02.11, 15:16   #9
Your_Conscience
Hinter dir!
 
Registriert seit: Apr 2010
Beiträge: 1.125
Bedankt: 487
Your_Conscience ist noch neu hier! | 0 Respekt Punkte
Standard

Tud mir leid, dass ich euch jetzt wiedersprechen muss: long double hat einen weit aus größeren Wertebereich als double das stimmt schon - ist aber kein Stück genauer.
Your_Conscience ist offline   Mit Zitat antworten
Antwort


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:44 Uhr.


Sitemap

().