小編在一次通過C#計算三角函數的時候發現程序計算出來的結果與書本上的結果不一致(什么 什么 計算機會出錯嗎 那肯定是你沒好好學習數學)
調用Math的三角函數方法
示例如下:
數學說:sin(180°) = 0

程序說: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)