三角函数 sin C# Cos 和 Cos

Trignometry in C# Cos & CosA

我正在 运行 回答一些应该很容易回答的问题,但我不能把我的手指放在上面。自从我做了一些三角函数以来已经有一段时间了。

double cosValue = -2.7105054312E-20;
// (ACos) returns the angle
var deducedAngleInRadian = System.Math.Acos(cosValue);
var cos = System.Math.Cos(deducedAngleInRadian);

Console.WriteLine(cosValue);
Console.WriteLine(deducedAngleInRadian);
Console.WriteLine(cos);

输出:

-2.7105054312E-20
1.5707963267949
6.12303176911189E-17

为什么cosValuecos不一样?

您是否注意到这两个值接近 0 且彼此接近的程度?

浮点 (im) 精度和每个方法的实现可能完美地解释了这一点。 这些方法并不完美,例如它们依赖于 Pi 的近似值(当然,因为 Pi 不能存储在计算机中;))。

您可能可以使用专门用于此并使用比 Double 精度更高的类型的科学库来获得更高的精度(您真的需要它吗)。 您可能会在 Math operations using System.Decimal in C#? or

中找到一些有趣的东西