2014-12-14 6 views
-5

Java에서 엔트로피 및 정보 게인과 관련된 일부 미적분을 만들려고 노력 중이며 다음과 같은 수식을 사용합니다. info_gain = infogain - nr1/nr2 * nr3.Java에서 빼기를 두 배로 늘림

nr1, nr2, nr3 및 인포 게인은 두 배입니다.

문제는 nr1/nr2 * nr3의 결과가 corect입니다. 그러나 내가 뺄셈을 할 때 나는 추악한 결과를 얻습니다.

예를 들어 nr1/nr2 * nr3은 0.574716이고 정보의 초기 값은 0.575306입니다. 내가 빼기를 할 때 나는 0.000589를 얻는다. 그게 정확하지 않거나 반환해야 할 것이 아닙니다 (저는 종이에 미적분을했습니다).

MathContext.DECIMAL64를 사용하고 divide (nr, 10, RoundingMode.HALF_UP)를 사용하여 BigDecimal을 사용하려고했습니다.

따라서 0.001 이상에서 결과를 얻을 수있는 가능성이 있습니까? (또는 유사하지만 0.000589는 아님).

+0

대답은'0.00059' 올바른지, 당신은 아마 종이에 뭔가 잘못 ... –

+0

했다, 나는 그 가정 것이다 다른 피연산자는 컴퓨터가 숫자를 뺄 수 없다고 생각하는 것이 아니라 생각한 결과가 아니거나 예상 된 결과가 정확하지 않습니다. –

답변

2

어, 0.575306 - 0.574716은 실제로 0.00059입니다. 피연산자 중 하나가 올바른지 있지만 빼기가 예상 결과를 얻을 수없는 경우에는

enter image description here

+1

WolframAlpha에 입력 한 것을 좋아합니다. Mathematica 엔진은 사람들의 빼기 능력을 떨어 뜨리는 문제를 해결했습니다. – initramfs

+1

내가 올바른 결과를 게시하고 있음을 확인하는 것, 하하! 덕분에 – Marv

+0

. 종이 작업은 PC의 계산법과 다릅니다. –