maximale größe von double,int, extend zur laufzeit bestimmen
-
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 hierpow(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.