에 문제를 부동 소수점 부정확성을 수정?천장
x <- 31/60
...
y <- ceiling(x*60)
나는 새로운 기능하고 생각 해요 : 분할이 옵션을 선택하지 않습니다 전에 곱셈을하는
는, 내 코드는 다음과 같이 보입니다
ceil <- function(x) {
ceiling(signif(x))
}
을하지만 난 R을 처음 접했을 때, 아마도 더 좋은 방법이있을 것입니다.
UPDATE, 나는 더 자세한 정보를 제공하지 않았다, 나는
죄송 다른 이유로 내 코드의 다른 부분에서 같은 문제가 있지만, 항상 천장.
부동 소수점 계산에서 반올림 오류가 있음을 알고 있습니다. 어쩌면 질문의 제목이 향상 될 수 있습니다. 천장 기능의 부정확성을 수정하고 싶지 않습니다., 제가하고 싶은 것은 아마 그 반대이며 천장이 덜 정확합니다. 분명히, 노이즈 자리를 무시하는 데 필요한 엡실론 문제의 상황에 따라,
options(digits=17)
31/60*60
#31.000000000000004
그러나 : 방법이 명확하게 소음이있는 자리를 무시 R 말할 수 있습니다.
[부동 소수점 수학이 깨졌습니까?] (http://stackoverflow.com/questions/588004/is-floating-point-math-broken) –
천장이 정확하므로 부정확하지 않습니다. 고치다. 반면에'/'와'*'는 모든 입력에 대해 정확하지 않으며, 부동 소수점 연산의 본질적인 특성이기 때문에이를 사용하지 않아도됩니다. –
왜 이것이 downvoted인지 모르겠다. OP는 왜 이런 일이 일어나는 지 물어 보지 않고 그것을 다루는 방법을 묻습니다. vvery 합리적인 질문, 잘 제기. – jlhoward