小编在一次通过C#计算三角函数的时候发现程序计算出来的结果与书本上的结果不一致(什么 什么 计算机会出错吗 那肯定是你没好好学习数学)
调用Math的三角函数方法
示例如下:
数学说:sin(180°) = 0
![](https://img2020.cnblogs.com/blog/1825683/202011/1825683-20201103143310224-79212242.png)
程序说:Math.Sin(180)
所以 Math.Sin(180) = -0.80115263573383044?
小编当场晕厥 于是换了一种思路:
Math.Sin(Math.PI) 看看结果
所以 Math.Sin(Math.PI) = 1.2246063538223773E-16?
个人简单分析:
1.浮点数在二进制和十进制之间转换会丢失精度
2. pi 是无理数,计算机取的是近似值
个人解决思路:
更改结果精度
更改如下:
Math.Round(Math.Sin(Math.PI), 5)
Math.Round(Math.Sin(Math.PI), 5) = 0
所以个人在使用三角函数时就会用以下格式:
Math.Round(Math.Sin(角度 * 1.00 / 180 * Math.PI), 5)