0
내가 데이터 하스켈은
data Expense = MkExpense Double String deriving (Eq,Ord)
및 비용의 목록 어떠했는지를 계산
balanced :: [Expense] -> Double -> Bool
balanced expenses epsilon =
let amounts = ...
in maximum amounts - minimum amounts < epsilon;
잔액되는 함수가 있다고 가정 목록의 변수의 목록을 (즉, 모든 사람이 동일하게 지급 부동 소수점 에러로 인한 엡실론의 최대 차이로), 엡실론은 0.01의 값을 갖는다.
그 이유는 정확하지만, 3 개의 점이있는 경우 복식 목록을 추출하려고합니다. 내 매개 변수의 모든 비용을 두 배로 늘릴 수 있습니다. 데이터 유형을 변경하지 않고 어떻게 할 수 있습니까?
이 ISN
그리고
extractExpense
는 데이터의Double
값의 언 래퍼 것 't 직접 귀하의 질문에 관련되어 있지만 강력하게 부동 소수점 값을 사용하지 않는 것이 좋습니다 t o 돈을 나타냅니다. 정수 대신 정수를 사용하는 경우 (예 : 미국 통화를 처리하는 경우) - 예에서 엡실론과 같은 것에 대해 더 이상 걱정할 필요가 없습니다. 통화를 더하고, 빼고, 곱할 수 있습니다 값을 반올림하거나 그런 것에 대해 걱정할 필요가 없습니다. – bdesham