Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Powerfunktion ungültige gleichkommaoperation (https://www.delphipraxis.net/127546-powerfunktion-ungueltige-gleichkommaoperation.html)

taker875 15. Jan 2009 10:05


Powerfunktion ungültige gleichkommaoperation
 
moin,

kann mir da vielleicht einer weiter helfen?

es geht um eine potenzfunktion:
Delphi-Quellcode:
ergebnis := a*power(x,n);
und um eine exponentialfunktion:
Delphi-Quellcode:
ergebnis := (a*power(ee,x)) * ((b*power(x,n)) + c*x+d);
so das ist ja schön und gut. nun gibt es da aber ein problem. (x verändert sich ständig)

wenn ich für n eine ganze zahl zum beispiel 2 nehme, geht das ohne probleme. aber nehme ich nun 1.9 bricht das ganze mit dem fehler "üngültige gleichkommaoperation". wie muss ich das nun ändern, damit das trotzdem geht? sitze da jetzt total auf dem schlauch^^

bitte helft mir

matashen 15. Jan 2009 10:10

Re: Powerfunktion ungültige gleichkommaoperation
 
So mal aus der Hilfe:

Zitat:

Die Funktion Power errechnet aus der Basis Base und dem beliebigen Wert Exponent die Potenz.

Unit

Math

Kategorie

Arithmetik

function Power(Base, Exponent: Extended): Extended;

Beschreibung

Power errechnet aus Base und einen beliebigen Wert die Potenz. Wird als Exponent ein Bruchwert oder ein Wert größer MaxInt angegeben, muß Base größer als 0 sein.
Ist x größer 0?

Das Ergebnis ist eine Gleitkommazahl, das heist alle anderen Zahlen auch extended sein, oder du must eine funktion zur Umwandlung einbauen.

Poste mal deine Varliste, was deine a,ee usw sind.

Gruß Matthias

taker875 15. Jan 2009 10:14

Re: Powerfunktion ungültige gleichkommaoperation
 
Delphi-Quellcode:
var
  Form1: TForm1;
  a,b,c,d,e,f,x,y,xs,ys,n               : Double;
  x0,y0,xB,yB,xEins,xZwei,xDrei,yEins,yZwei,yDrei,index : Integer;
  groesse : integer;
  FunktionArt : integer = 0;

  const ee = 2.718281828459;
heißt das, dass ich a,b,c,d,e,f,x,y,xs,ys,n : Double; als Extended brauche?

x ist nicht immer größer als 0. aber das dürfte ja nicht das problem sein. x^2 geht ja nur x^1.9 geht eben nicht, und bricht mit folgendem fehler ab. heißt das, dass Double nicht der richtige typ ist?

danke

matashen 15. Jan 2009 10:24

Re: Powerfunktion ungültige gleichkommaoperation
 
Zitat:

heißt das, dass ich a,b,c,d,e,f,x,y,xs,ys,n : Double; als Extended brauche?
Ja, ausser du baust ständig floattoint(real) ein, damit wird dein Ergebnis aber ungenauer

Gruß Matthias

matashen 15. Jan 2009 10:29

Re: Powerfunktion ungültige gleichkommaoperation
 
Ach ja ausser dein Ergebnis soll eine Ganzzahl sein, dann kannst du natürlich

ergebnis:=round(dein Term);
machen

Gruß Matthias

taker875 15. Jan 2009 10:40

Re: Powerfunktion ungültige gleichkommaoperation
 
hmm habe jetzt oben mal
Delphi-Quellcode:
var
  Form1: TForm1;
  a,b,c,d,e,f,x,y,xs,ys,n               : Extended;
aber damit bricht er mir die powerfunktion in der potenzfunktion auch ab, wenn ich n 1.9 groß mache.

damit ich das jetzt richtig verstehe. also was ist sein problem bei
Delphi-Quellcode:
a*x^n   also  a*power(x,n);
dass er mir es immer abbricht bei n keine ganze zahl. der windows taschenrechner kann es auch nicht rechnen.

kann mir bitte irgendwer weiter helfen, wie ich es irgendwie mache kann, dass n nicht ganzzahlig sein muss. oder geht das gar nicht.

vielen vielen dank

soulies 15. Jan 2009 10:53

Re: Powerfunktion ungültige gleichkommaoperation
 
hoi,

'n' muss keine ganzzahl sein.

die frage für mich ist wie du 'n' einen wert übergibst.
Trägts du den Wert in ein Edit Feld ein oder so ?

Falls ja und du gibst '1.9' ein dann versuch mal '1,9'.

cya

taker875 15. Jan 2009 11:02

Re: Powerfunktion ungültige gleichkommaoperation
 
Liste der Anhänge anzeigen (Anzahl: 1)
als übergabe nehme ich einen schiebregler:

Delphi-Quellcode:
procedure TForm1.ScrollNChange(Sender: TObject);
begin
n := -5+10*Form1.ScrollN.Position/100;
FeldN.Text := FloatToStrF(n,ffFixed,6,2);
end;

zum download mal mein programm zum download dran. also wäre klasse, wenn mir irgendwer sagen könnte, wie ich es schaffe.

matashen 15. Jan 2009 12:08

Re: Powerfunktion ungültige gleichkommaoperation
 
Zitat:

hoi,

'n' muss keine ganzzahl sein.

die frage für mich ist wie du 'n' einen wert übergibst.
Trägts du den Wert in ein Edit Feld ein oder so ?

Falls ja und du gibst '1.9' ein dann versuch mal '1,9'.

cya
Moment,

In der Variablendeklaration ist n als double angegeben, double=Ganzzahl.

Wenn taker in n:=1.9 schreiben will MUSS das eine Variable vom Typ float(real, extended etc) sein, sonst gaht das nicht.

Gruß Matthias

soulies 15. Jan 2009 12:20

Re: Powerfunktion ungültige gleichkommaoperation
 
hoi,

ich glaub das problem liegt woanders.

in der Hilfe zu Power() steht
Zitat:

Beschreibung

Power errechnet aus Base und einen beliebigen Wert die Potenz. Wird als Exponent ein Bruchwert oder ein Wert größer MaxInt angegeben, muss Base größer als 0 sein.
sein exponent ist 1.9 = Bruchwert und
sein startwert der base ist bestimmt < 0 ... = es knallt

cya


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:29 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz