Was kommt nach double ?



  • Die interne Genauigkeiten von 'double' und 'long double' sind und bleiben vor allem vom Compiler abhängig. 'long double' kann also mal 32, 48 oder 64 bit aufweisen. Gesichert sollte 32 bit sein.



  • Ich habe einen eigenen Datentyp programmiert, bei der die Genauigkeit bei 2000 Nachkomastellen liegt. Besucht doch mal meine Seite http://www.srbib.de . Ich habe es ursprünglich für Linux programmiert. Aber wenn Ihr wollt, könnte ich meine Webseite ein bisschen umgestallten, damit man sich auch den Quelltext anschauen kann. Auf meine Seite findet Ihr auch viele Screenshots zu meiner Bibliothek.

    Gruß,
    Stefan



  • @ stefan2008:
    Nach deiner Homepage rechnest du mit den Zahlen als Zeichenkette. Ich denke nicht unbedingt, dass diese Lösung optimal, geschweige denn schnell ist 😉

    Trotzdem nett, deine Bibliothek 🙂



  • @ Stefan2008
    Na ja, ganz nett Deine Idee. Byte-weises Rechnen bleibt aber angesagt, wenn man an dieser Stelle etwas verbessern möchte. Sage uns mal, wer für floatingpoint mehr als 8 (oder vielleicht 16) Bytes benötigt.



  • Gute Frage. Ich glaube man könnte diese Bibliothek verwenden, um die Genauigkeit von Maßeinheiten, die unterhalb von Picometer ligen, genauer darzustellen oder den Abstand von zwei Planeten in Metern genau zu ermitteln. Natürlich ist es mit den Vor- und Nachkommastellen übertrieben und kein Mensch achtet genau auf Nachkommastellen. Aber ich will einfach demonstrieren, dass mein Datentyp, im Gegensatz zu den Standarddatentypen einfach sicherer arbeitet, da es einige Regeln beachtet.
    Ich habe aber noch ein paar Probleme. Zum Beispiel weis ich nicht, wie der Algorithmus für die n-te-Wurzel definiert ist. Oder wie ich es den Computer beibringen kann, das manche Rechenoperatoren einen höheren Rang haben als Andere.



  • Mir ist bei den Standarddatentypen float und double etwas aufgefallen. Wenn man mit den Standarddatentypen float von -3 auf 3 hochzählt, erhält man bei Doppeltkernprozessoren in der Mitte keine Null; nur bei einfachen Prozessoren. Verwändet man aber double, so erhält man bei Doppeltkernprozessoren in der Mitte eine Null. Sehr interessant. Dieses Experiment habe ich mal zu meiner Praktikumszeit auf zwei verschiedene Rechner ausprobiert.


  • Mod

    stefan2008 schrieb:

    Mir ist bei den Standarddatentypen float und double etwas aufgefallen. Wenn man mit den Standarddatentypen float von -3 auf 3 hochzählt, erhält man bei Doppeltkernprozessoren in der Mitte keine Null; nur bei einfachen Prozessoren. Verwändet man aber double, so erhält man bei Doppeltkernprozessoren in der Mitte eine Null. Sehr interessant. Dieses Experiment habe ich mal zu meiner Praktikumszeit auf zwei verschiedene Rechner ausprobiert.

    Ich verstehe immer nur Bahnhof.



  • Wie ging das Zitat nochmal genau? Irgendwas vonwegen wenn man schätzen will nimmt man floating-point, wenn man rechnen will Integers.
    War das von Knuth oder von wem?

    Soviel nur zum Thema Null 🙂

    p.S.: falls der Doppelkern ein Core Duo (ohne 2) war... der Core Duo hat AFAIK einige bekannte Bugs, würde mich nicht wundern wenn da auch die FPU betroffen ist.



  • @camper
    Ich meinte folgendes:

    #include <iostream>
    
    using namespace std;
    
    int main(void)
    {
    	for(float c = -3; c < 4; c++)
    	{
    		cout << c << '\n';
    	}
    	return 0;
    }
    

    Ausgabe:

    -3
    -2
    -1
    -0.001 <- != 0
    1
    2
    3
    

    @hustbaer
    Du hast vielleicht recht. Der PC mit ich in der Firma gearbeitet habe, hat ein Core-Duo-Prozessor gehabt. Bei meinem Laptop ist, wie erwartet, eine 0 heraus gekommen.
    Ich habe in mein Buch das Zitat auch einmal gelesen.



  • also ich habe einen Intel(R) Core(TM)2 Duo CPU und bei mir wird es stets richtig ausgegeben.


Anmelden zum Antworten