Ich bin schrecklich verärgert über die Ungenauigkeit der intrinsischen Triggerfunktionen in der CLR. Es ist gut, dassGenauigkeit von Math.Sin() und Math.Cos() in C#
Math.Sin(Math.PI)=0.00000000000000012246063538223773
statt 0 Etwas Ähnliches geschieht mit Math.Cos(Math.PI/2)
.
Aber wenn ich eine lange Reihe von Berechnungen mache, die auf Sonderfälle zu bewerten
Math.Sin(Math.PI/2+x)-Math.Cos(x)
und das Ergebnis Null ist für x = 0,2, aber nicht Null für x = 0,1 (versuchen Sie es). Ein anderes Problem ist, wenn das Argument eine große Zahl ist, wird die Ungenauigkeit proportional groß.
Also frage ich mich, ob jemand etwas bessere Darstellung der trigonometrischen Funktionen in C# für den Austausch mit der Welt codiert hat. Ruft die CLR eine Standard-C-Mathematikbibliothek auf, die CORDIC oder etwas Ähnliches implementiert? Link: wikipedia CORDIC
Wie genau glauben Sie, dass die Darstellung von pi doppelt ist? –
Wenn Sie symbolische Mathematik wollen, tun Sie symbolische Mathematik. Wenn Sie Fließkommatypen verwenden, erhalten Sie eine endliche Genauigkeit. – AakashM
-1 für nicht "Hausaufgaben machen", und auch für das Denken, dass 'System.Math' Teil von C# ist (Hinweis: es ist Teil der.NET Framework). –