정렬 시 주의 사항 [더블]
4910 단어 haskell
> import Data.List
> let nan = 0/0 :: Double
> sort [3,2,nan,1,5,nan,4]
[1.0,4.0,NaN,5.0,NaN,2.0,3.0]
이 동작은 nan을 자체 또는 숫자와 비교할 때 이상한 동작으로 인한 것 같습니다.
> nan < nan
False
> nan == nan
False
> nan > nan
False
> compare nan nan
GT
> nan < 0
False
> nan == 0
False
> nan > 0
False
> compare nan 0
GT
와 공포.
NaN이 포함될 가능성이 있는 목록을 정렬할 때 사용하는 것이 좋습니다
isNaN
.isNaN :: RealFloat a => a -> Bool
NaN을 제거하거나 적절한 처리 후에 정렬합니다.
> sort . filter (not . isNaN) $ [3,2,nan,1,5,nan,4]
[1.0,2.0,3.0,4.0,5.0]
> sort . map (\x -> if isNaN x then -1 else x) $ [3,2,nan,1,5,nan,4]
[-1.0,-1.0,1.0,2.0,3.0,4.0,5.0]
Reference
이 문제에 관하여(정렬 시 주의 사항 [더블]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/lotz84/notes-on-sorting-double-565g텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)