1. 程式人生 > >Mathematica筆記 刪除重複元素並排序中遇到的精度問題

Mathematica筆記 刪除重複元素並排序中遇到的精度問題

問題來源:浮點數大坑

62.02/62.02=1.`

62.03/62.03=0.9999999999999999`

然後Union的時候就很尷尬


In[20]:= {.2,62.02/62.02,.8,.6,62.03/62.03}
Out[20]= {0.2,1.,0.8,0.6,1.}
In[21]:= Union[%]
Out[21]= {0.2,0.6,0.8,1.,1.}

注意結尾有兩個1

後來發現Union有個神奇的引數


Union[%21, SameTest -> (Abs[#1 - #2] < 10^-14 &)]

問題解決

補充:後來發現有現成的函式可以用

Union[%21, SameTest -> Equal]