Je suis terriblement contrarié par l'inexactitude des fonctions trigonométriques intrinsèques dans le CLR. Il est bien connu quePrécision de Math.Sin() et Math.Cos() dans C#
Math.Sin(Math.PI)=0.00000000000000012246063538223773
au lieu de 0. Quelque chose de semblable se produit avec Math.Cos(Math.PI/2)
.
Mais quand je fais une longue série de calculs sur des cas particuliers à évaluer
Math.Sin(Math.PI/2+x)-Math.Cos(x)
et le résultat est nul pour x = 0,2, mais pas zéro pour x = 0,1 (essayer). Un autre problème est lorsque l'argument est un grand nombre, l'inexactitude devient proportionnellement grande. Donc, je me demande si quelqu'un a codé une meilleure représentation des fonctions trig en C# pour le partager avec le monde. Est-ce que le CLR appelle une bibliothèque mathématique C standard implémentant CORDIC ou quelque chose de similaire? link: wikipedia CORDIC
À quel point croyez-vous que la représentation de pi en tant que double est exacte? –
Si vous voulez des maths symboliques, faites des maths symboliques. Si vous utilisez des types à virgule flottante, vous obtenez une précision finie. – AakashM
-1 pour ne pas "faire vos devoirs", et aussi pour penser que 'System.Math' fait partie de C# (indice: cela fait partie du.NET Framework). –