Mathematica笔记 删除重复元素并排序中遇到的精度问题
程序员文章站
2022-03-31 20:47:22
...
问题来源:浮点数大坑
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]
上一篇: 读取文件夹内所有图片,并将文件名按行存放在txt文件中
下一篇: 回溯解决24点问题