C#--三角函數問題


小編在一次通過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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM