Hallo, Am Montag, 29. Dezember 2003 20:07 schrieb Bernhard Walle:
On Mon, 29 Dec 2003 at 19:53 (+0100), Ferdinand Ihringer wrote:
Am Montag, 29. Dezember 2003 19:06 schrieb Bernhard Walle:
On Mon, 29 Dec 2003 at 17:53 (+0100), patrick dahl wrote:
Funktion: Soll Steigungs-Winkel einer Geraden berechnen. (Hoffe mal, die Formel stimmt so ;) )
Problem: Das Ergebnis(letzte Zeile der Mail). Welchen Variabelen-Typ muss ich denn nehmen, um ein normales, numerisches Ergebnis zu bekommen? (z.b. 20.Grad) Wenn ich für x,y.. und winkel 'integer' nehme, sagt mir der Compiler, dass die Typen nicht kombatibel zu 'Extended' seien, 'double' liefert das gleiche Ergebnis wie 'Extended'...
Konsole (Bsp.):
Berechnung von Steigungswinkel(mit zwei Punkten) x1 eingeben:7 x2 eingeben:14 y1 eingeben:2 y2 eingeben:6 Ergebnis: 5.19146114246523E-0001 Grad (aber nicht Celsius*g*)
Du gehst noch zur Schule, richtig?
Du musst Gradmaß in Bogenmaß umrechnen. Computer (und Taschenrechner, wenn man sie anders einstellt) rechnen immer mit Bogenmaß. Das kommt einfach daher, dass die Winkelfunktionen so angenähert werden.
Auf Taschenrechner gibt es dann meistens zwei Graede. Und Grad ist der mit 400-Teilstuecken, weswegen es viele verwechseln und dieses als Modus nehmen. Fuer 360-Grad muss man Degree nehmen.
Und für was braucht man diese 400er-Grade?
400 Grade 'braucht' man, um einfacher rechnen zu können. 2 × 2 × 2 × 2 × 5 × 5 = 400 ^= 110010000 ^= 190 2 × 2 × 2 × 3 × 3 × 5 = 360 ^= 101101000 ^= 168 Das passt eben besser in ein Dezimalsystem und auch binär oder hexadezimal sieht es ein bisschen schöner aus. Babylonier hätten 360 bevorzugt. Computer vielleicht eine reine Zweierpotenz, da bietet sich aber keine wirklich an, weswegen die auch gleich bei Radian bleiben können...
Bogenmaß heißt einfach Länge des Bogens des Einheitskreises (Radius = 1), den ein Winkel einschließt. Also:
g b g: Winkel im Gradmaß --- = -------- 360 2 * pi b: Winkel im Bogenmaß
Und dann halt umstellen. Integer ist eine Ganzzahl, Double (heißt das nicht Real in Pascal?) eine Gleitkommazahl. Winkelfunktionen liefern naturgemäß eine Gleitkommazahl. Was Extended ist, weiß ich nicht, da ich kein Pascal kenne. In C/C++/Java gibt's das nicht. :-)
Extended hat eine hohere Genauigkeit als Real und entspricht nach der Kylix-Doku long double. Er ist aber nach dieser nur beschraenkt plattformuebergreifend. Ich weiss nicht, ob das bei long double genauso ist. Double gibt es in Pascal auch und entspricht nach der Doku auch double, wird aber anders gespeichert, weswegen ich der Gegenueberstellung nicht ganz glaube. Jedenfalls sind alles Fliesskommatypen und als Genauigkeit reichen in dem Fall wohl alle.
Also nochmal:
------------------------------------------------------- C Genauigk. Pascal ------------------------------------------------------- long double 80 bit Extended double 64 bit Double float 32 bit Real -------------------------------------------------------
Oder hab ich da jetzt was verkehrt verstanden.
Nein, nach der Delphi-Doku entspricht Real auch double, aber mit 32 bit. Das verstehe ich nicht ganz, steht aber so da drin. *liest nochmal nach* Achso, einen Satz übrlas ich vorhin. Da steht, dass der generische Typ Real in der aktuellen Implentation mit dem Typ Double identisch ist. Dann ist wohl die andere Tabelle falsch. Real hatte früher mal nur 48 Bit, was jetzt in Delphi Real48 heißt. Also wahrscheinlich sowas: ------------------------------------------------------- C Genauigk. Pascal ------------------------------------------------------- long double 80 bit Extended double 64 bit Double in Delphi momentan wie double Real ? 48 bit Real48 float 32 bit Single -------------------------------------------------------
BTW: Kylix gibt's doch eh nur für Linux/x86 und Windows. Wieso dann "beschränkt plattformuebergreifend".
Das bezieht sich auf den Austausch von Daten zwischen zwei verschiedenen Plattformen. Da ist die Sprache relativ egal. Das vergaß ich dazu zuschreiben. Ferdinand