2016-08-10 1 views
-1

로 계산 (+ 0.0901/12 0.0901/12 * (1), 356.966667)Math.pow 내 자바 클래스에서</p> <p>Math.pow 다음 계산을하려고 한 소수점

제한 나는 그 결과로 0.0을 얻고있다. 그러나 예상 결과는 0.10844입니다.

+0

아니요, 수학에 0이라고 표시되거나 0.00000000000001 – AmazingDreams

+1

0.0901/12 * (1 + 0.0901/12)와 같은 것이 0.0075647084027 (7)과 같습니다. 이 값을 357의 제곱으로 올리면 두 배의 정밀도보다 훨씬 낮은 수를 얻을 수 있습니다. 그 결과로 0.0을 얻게됩니다. – Dth

+0

기지는 ~ 0.993779와 같아야합니다. 그렇게 힘을 길러 주면 예상 답변을 얻을 수 있습니다. – Slimu

답변

2

귀하의 결과는 0.10844이어야합니다. 기본 숫자는 ~ 0.00756과 같으며 ~ 357의 양수로 올립니다. 이것은 큰 힘을 얻으려면 소수점 이하로 더 많은 0을 갖게된다는 것을 의미합니다. 즉, 하나의 double 값을 저장할 수있는 양수 값이 작아지고 0.0으로 반올림됩니다.

BigDecimal을 사용하면 계산을 위해 ~ 7.08E-756, Double.MIN_VALUE가 가장 작은 양수 값 (Double.MIN_VALUE)은 4.9E-324가됩니다. 즉, 0.0이 반올림 된 값이됩니다.

+0

'System.out.printf ("%. 20f", Math.pow (...)); 나는 OP가 뭔가를 어딘가에서 잘못 생각했다고 생각한다. – progyammer

+0

숫자에 맞게 소수점 뒤에 너무 많은 0이 있습니다. – Slimu

+0

글쎄, 나는 'float'또는 'double'이이 많은 장소들을 지원하지 않는다고 생각한다 ... [Wolfram] (https://www.wolframalpha.com/input/?i= ((0.0901 + % 2F + 12) * (1 % 2B (0.0901 + % 2F + 12))) + % 5E + 356.966667) – px06