long zu klein



  • das gmp sieht ja abartig aus. such dir lieber eine klasse. init & clear, wo leben wir denn!
    und das ganze gerede um int64 und long double und so ist sinnlos. floating points sind nicht genau genug und int64 kann nicht annaehernd 64^8 darstellen.



  • Nur ne Frage .... wieso passt 64^8 nicht in nen Float oder double ?

    float = -3.4E38 < x < +3.4E38
    Da passt es imho locker rein 🙂
    nur ned ganz so genau .... auf 6-7 Stellen

    Das ist ja der witz der Flieskommazahlen 🙂

    Ich hoffe das verwirrt jetzt ned allzusehr ...

    ciao ...



  • @PeterTheMaster:

    Du hast ne komische Mathematik:

    int64 kann nicht annaehernd 64^8 darstellen.

    😃

    648=(8*8)8=(23*23)8=(26)8=248 ca. 2.81*10^14 (15 Stellig!)

    2^64 ca. 1.84*10^19 (20 Stellig) !!!Da past das aber locker 'rein!!!

    @XYZ
    Long double hat 19 Stellen, da past 64^8 noch GENAU rein (Das ist der Sinn von long double fuer wissenschaftliche Berechnungen!)

    @Dimah
    Ich dachte die C++ string- Klasse hat Constructoren fur Zahlen oder Konverterfunktionen (Ich mach BCB, der hat sowas). Meine Frage war: Kann damit ein long double konvertiert werden in string? Gibt's sowas in C++?



  • Solche Konvertierungskonstruktoren gibt es nicht. Vielleicht suchst du Stringstreams.



  • Danke Bashar, da bleib ich lieber beim BCB. :p
    (Der macht's aber auch nur bis double) 😮

    [ Dieser Beitrag wurde am 18.03.2003 um 17:23 Uhr von DerAltenburger editiert. ]



  • hi dimah kannst du mir mal bitte erklären was du in der funktion int64tostr machst . also eigentlich was du der insert funktion übergibst...

    mfg dohan



  • @Dohan

    //ASCII- Code von 'letzter' Stelle an string- Anfang
      ergebnis.insert( 0, n % 10 + '0' );
      //Zahl 'zehnteln
      n /= 10;
    

    0, : an erste Stelle in String
    n%10, : n Modulo 10 (Restwertdivision) = Wert der EinerStelle
    + '0' : ASCICODE von Zeichen Null 😉



  • also der modulo op % liefert den rest einer ganzzahl diviesion z.b.
    112 / 10 = 11 Rest 2
    5547 / 10 = 554 Rest 7
    also man merkt das % 10 einen die letzte ziffer liefert.

    was bedeutet jetzt dieses + '0'?
    '0' ist ein zeichenliteral, ein char und ein char ist nix weiter als eine zahl.
    z.b. 48

    n   % 10 + '0'
    112 % 10 + '0'
    112 % 10 + 48
    2        + 48
    -------------
               50
    

    und unter 50 ist das ascii zeichen '2'



  • hi ich hab nochmal ne frage warum gibst du den rückgabewert der funktion als const string an(@dimah) bringt das irgendwelche vorteile????

    mfg dohan



  • http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=constcor#Answ

    außerdem hinder es mich vor sachen wie

    string foo() { return ""; }
    int main() { foo() = "bar"; }
    

    naja eigentlich habe ich damit kein problem, mehr zeit in anspruch nimmt es wenn ich den leuten erklären muss wieso ich das mache 😉


Log in to reply