Entwickler-Ecke
Basistechnologien - C# Math.Sin() spinnt?
tartare - Mi 21.02.07 18:47
Titel: C# Math.Sin() spinnt?
Hallo,
ich schreibe gerade ein programm womit sich ein Dreieck berechnen lässt. funktioniert auch ganz gut, außer beim Sinus: Ich habe debugged und Math.Sin(56°) meinte dass das -0.521... ist, habs mit nem Taschenrechner geprüft ist eigentlich 0.829... . Soweit ich weiß kann ein Sinus nicht negativ sein, oder? Woran kann das liegen muss ich das noch irgendwie umrechnen?
Danke im Vorraus...
mfg tartare
Moderiert von
Christian S.: Topic aus Algorithmen, Optimierung und Assembler verschoben am Mi 21.02.2007 um 17:50
Christian S. - Mi 21.02.07 18:51
Der Hint für Math.Sin in der IDE sagt's ja schon: "An angle, measured radians." Du musst den Winkel also im Bogenmaß angeben.
Gausi - Mi 21.02.07 18:52
Doch, sinus kann negativ werden ;-)
Die Ursache deines Problems liegt darin, dass die Routinen im Rechner in aller Regel im Bogenmaß rechnen (ein Kreis = 2pi, auf dem Taschenrechner RAD), und du deinen Taschenrechner bestimmt auf DEG gestellt hast, wo ein voller Kreis 360° sind.
Der Vollständigkeit halber: bei GRAD ist ein voller Kreis 400°. Ein rechter Winkel sind dann 100°.
Such mal nach Deg2Rad oder Rad2Deg oder vergleichbarem - da findet man dann Umrechnungsfunktionen ;-)
tartare - Mi 21.02.07 19:16
OK, Danke!!!
Ordnungshalber:
Ich mach das ganze jetz so:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| private double Cos(double zahl) { return Math.Cos(zahl * (Math.PI / 180)); }
private double Sin(double zahl) { return Math.Sin(zahl * (Math.PI / 180)); } |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!