最近寫的東西用到了數學庫中的acos函數,但是代碼在運行的時候有時候會出莫名其妙的錯誤,比如返回值是個特別大的數。
最后在debug 的時候發現acos返回的數據很奇怪,但是傳入的參數明明沒有問題,可以保證是(-1,1)。
回想起,double類型的末尾數據是不確定的,比如當double類型數據alpha = 1.0時其真實值可能是1.00001;這明明是很早就知道的,但是在寫代碼的時候有時候卻很容易忘記。所以在acos部分加入界限判別部分
acos((alpha > 0.99) ? 0.99 : (alpha < -0.99) ? -0.99 : alpha):
借此以作提醒,熟記熟用基本知識!
