maximale größe von double,int, extend zur laufzeit bestimmen



  • Hallo,

    wie kann ich die maximale größe von double,int, extend zur laufzeit bestimmen.

    thx 😉

    Gruß,
    d0x.

    Edit:

    ok, habs dank Space+ctrl schon gefundne. Die lösung waren die funktionen

    MaxDouble(double) MaxInt(int)

    gruß 😉



  • Hallo,

    Standardkonform geht das über die Template Klasse numeric_limits aus der limits
    Bsp.

    // Maximum für float
    float max = numeric_limits<float>::max();
    //Minimum für int
    int min = numeric_limits<int>::min();
    


  • hi,

    wie prüf ich denn jetzt ob pow(5;100) größer als Max int ist?

    das lößt ja keine exception aus 😞



  • da ich keine methode kenn würd !!ICH!! die brachial methode machen.

    pow(2,sizeof(int))<pow(5;100)
    


  • hm, versteh ich nicht. in wirklichkeit sieht die methode auch so aus:

    double TFunktion::calcPt(int Grad)
    {
       double erg = 0;
    
       if( Grad >= 0 )
       {
          erg += calcGleichung(Gleichung, EntwicklungspunktA);
    
          for(int i=1; i<=Grad; i++)
          {
             TGleichung fiVonA = toAbleitung(i);
             long nFakultaet = calcFakultaet(i);
    
             erg += calcGleichung( fiVonA ) / nFakultaet *
                    pow( Gleichung.x -EntwicklungspunktA, i);
          }
       }
       return erg;
    }
    

    Die Methode gibt einem das Ergebnis einer Funktion eines höhren Geraddes zurück.

    und zwischen durch, ists möglich, das erg zu groß wird. In diesem fall soll er MaxDouble zurück geben.



  • d0x(asgast) schrieb:

    hi,
    wie prüf ich denn jetzt ob pow(5;100) größer als Max int ist?
    das lößt ja keine exception aus 😞

    Du kannst aber eine exception auslösen lassen. Du mußt nur die Standardbehandlung im Errorhandler ändern. Sieh mal nach _matherr in der Hilfe.

    @ky_fr34k
    Was soll das hier

    pow(2,sizeof(int))<pow(5,100)
    

    deiner Meinung nach bewirken (außer true)? Nur als Hinweis, sizeof(int) gibt normalerweise 4 zurück (Bytes), außerdem ist int signed.



  • damit kannst dann prüfen wann deine zahl zu groß wird
    2 hoch size of int gibt die max int größe
    🙂
    war des so nicht gemeint??

    wäre nicht des erste mal das ich was falsch versteh 😉



  • Das war schon so gemeint, bloß gibt 2 hoch sizeof(int) nicht die maximale Größe eines int zurück.



  • Es ist aber auch möglich, dass pow keine exception auslößt (weil das ergebnis noch in einen Double passt), aber der MaxDoublewert erst gesprengt wird, wenn ich das ergebnis von der Pow rechnung in die Variable "erg" schieb.



  • Vielleicht fängt der __matherr Handler auch das ab. Probiers doch mal aus.



  • Hm, nein.

    Ich hab auch mal in der liste die kommt, wenn man strg + space drückt, geschaut ob ich da was an gloablen variablen finde, ist aber nicht so. Die hilfe kennt
    _matherr nicht.

    Sonst noch eine idee?



  • Was für eine Builderversion hast du denn? BCB5 und BCB6 kennen _matherr. Die Hilfe von meinem BDS2006 funktioniert leider nicht, so dass ich da nicht nachschauen kann.
    Geh einfach mal in den Hilfeindex und tippe das Wort da ein.
    PS.
    Das Beispiel aus der BCB5-Hilfe läßt sich problemlos im BDS kompilieren.


Anmelden zum Antworten