long zu klein



  • Original erstellt von <len0X>:
    in der doku hab ich jetzt gefunden dass es "unsigned long" auch gibt was ich immer mit unsigned long int verwechselt habe, in die aber auch nur die größe bis zu 4294967295 reinpasst...da muss es doch noch eine andere möglichkeit geben...ich will zwar jetzt keinen taschenrechner machen, aber taschenrechner können sowas ja auch

    #usigned long und unsigned long int sind dasselbe.



  • 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 😉


Anmelden zum Antworten