Willkommen |
|
myGully |
|
Links |
|
Forum |
|
|
|
 |
18.01.11, 14:27
|
#1
|
Ist öfter hier
Registriert seit: Nov 2009
Beiträge: 219
Bedankt: 189
|
[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
|
|
|
18.01.11, 15:14
|
#2
|
bla
Registriert seit: Mar 2010
Beiträge: 312
Bedankt: 302
|
Da googelst du am besten nach "Langzahlen-Arithmetik".
Ich kenne zB die Klassenbibliothek C-XSC.
|
|
|
18.01.11, 15:42
|
#3
|
Ist öfter hier
Registriert seit: Nov 2009
Beiträge: 219
Bedankt: 189
|
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
|
|
|
18.01.11, 16:22
|
#4
|
Geschmack hadda
Registriert seit: Nov 2010
Beiträge: 77
Bedankt: 56
|
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
|
|
|
18.01.11, 17:07
|
#5
|
`
Registriert seit: Nov 2010
Ort: Zuhause
Beiträge: 142
Bedankt: 37
|
Zitat:
Zitat von waldfee0071
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
|
|
|
18.01.11, 18:17
|
#6
|
Ist öfter hier
Registriert seit: Nov 2009
Beiträge: 219
Bedankt: 189
|
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
|
|
|
18.01.11, 18:21
|
#7
|
`
Registriert seit: Nov 2010
Ort: Zuhause
Beiträge: 142
Bedankt: 37
|
Zitat:
Zitat von waldfee0071
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
|
|
|
18.01.11, 18:59
|
#8
|
Ist öfter hier
Registriert seit: Nov 2009
Beiträge: 219
Bedankt: 189
|
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 ^^
|
|
|
02.02.11, 15:16
|
#9
|
Hinter dir!
Registriert seit: Apr 2010
Beiträge: 1.125
Bedankt: 487
|
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.
|
|
|
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
HTML-Code ist Aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:11 Uhr.
().
|