欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Mathematica笔记 删除重复元素并排序中遇到的精度问题

程序员文章站 2022-03-31 20:47:22
...

问题来源:浮点数大坑

62.02/62.02=1.`

62.03/62.03=0.9999999999999999`

然后Union的时候就很尴尬

Mathematica笔记 删除重复元素并排序中遇到的精度问题

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有个神奇的参数

Mathematica笔记 删除重复元素并排序中遇到的精度问题

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

Mathematica笔记 删除重复元素并排序中遇到的精度问题

问题解决

补充:后来发现有现成的函数可以用

Union[%21, SameTest -> Equal]