Seite 1 von 1

Mathematische Formeln einbinden

Verfasst: 7. Oktober 2007 11:55
von qtprogram
Hallo,

ich möchte in meinem QT Programm eine mathematische Formel einbinden.
Ich dachte, dass ich da "math.h" als header einbinde und dann meine Formel, bestehend aus n-te Wurzel, Exponent und Abrunden, einfach mit zB sqrt schreiben kann.

Muss ich da eine bestimmte QT Klasse einbinden? (ich habe auf anhieb keine gefunden.)

Wie kann ich Zahlen abrunden ?? (round off)

Vielen Danke für Eure hilfe schon im Vorraus :-)

Verfasst: 7. Oktober 2007 12:17
von QNoob
Moin,

weiß zwar nicht genau, was du mit "Formeln einbinden" meinst, aber wenn du mathematische Berechnungen durchführen willst, kann ich dir folgendes empfehlen

GNU Scientific Library:
http://www.gnu.org/software/gsl/

BLAS-Atlas oder auch nur BLAS:
http://math-atlas.sourceforge.net/
http://www.netlib.org/blas/

Wenn du Linux benutzt, kannst du die Bibliotheken einfach über den Paketmanager installieren. Die Pakete sind in fast jeder Distribution enthalten. Für einfachere Berechnungen reichen die Funktionen aus "math.h" natürlich aus.
Muss ich da eine bestimmte QT Klasse einbinden? (ich habe auf anhieb keine gefunden.)
Kannst du auch nicht, weil das mit Qt nichts zu tun hat ;-)

Wie kann ich Zahlen abrunden ?? (round off)
Das geht mit den Funktionen aus "math.h". Guck dir dazu mal "floor" und "ceil" an.

Ich hoffe, dass ich dir damit weiterhelfen konnte :-)

Verfasst: 7. Oktober 2007 17:24
von mollitz

Code: Alles auswählen

int qRound ( qreal value ) 
Rounds value to the nearest integer. For example: 
 qreal valueA = 2.3;
 qreal valueB = 2.7;

 int roundedValueA = qRound(valueA);
 \\ roundedValueA = 2
 int roundedValueB = qRound(valueB);
 \\ roundedValueB = 3 

musste halt wenn de auf 2 kommastellen runden willst erst die zahl mal 100 dann runden und wieder durch 100 teilen oder so.

Verfasst: 7. Oktober 2007 19:11
von iaby

Code: Alles auswählen

int Runde(float value) {
return (int)(value + 0.5);
}

int RundeAb(float value) {
return (int)value;
}

Verfasst: 7. Oktober 2007 19:46
von Christian81
iaby hat geschrieben:

Code: Alles auswählen

int Runde(float value) {
return (int)(value + 0.5);
}
[/quote]

Na dann hoffen wir mal das value nie negativ wird...  :roll: 

QNoob hat recht - floor() ist die richtige Wahl.

Verfasst: 7. Oktober 2007 19:53
von qtprogram
also ich hab das ganze jetzt mit floor versucht... das geht schon... Danke..

Das andere wirft bei mir im Moment leider nur Fragezeichen auf... Sorry..

Aber vielen Dank

LG