문제

에 따르면 위키 백과 음수를 반올림하면 절대 숫자를 반올림합니다. 따라서 그 추론에 의해 -3.5는 -4로 반올림 될 것이다. 그러나 java.lang.math.round (-3.5)를 사용하면 -3을 반환합니다. 누군가 이것을 설명해 주시겠습니까?

도움이 되었습니까?

해결책

에 따르면 Javadoc

논쟁에 가장 가까운 시간을 반환합니다. 결과는 1/2를 추가하고 결과의 바닥을 가져 가서 결과를 길게 시전하여 정수로 반올림됩니다. 다시 말해, 결과는 표현식의 값과 같습니다.

(long)Math.floor(a + 0.5d)

개념적으로, 당신은 둥글다 위로. 다시 말해, 다음 정수에 보다 큰 값보다 -3은 -3.5보다 크고 -4는 더 적습니다.

다른 팁

반올림 방법에는 다양한 방법이 있습니다. 당신이보고있는 것을 대칭 산술 반올림이라고합니다 (말한대로). "이 방법은 예를 들어 회계에서 수학 응용 프로그램에서 일반적으로 사용되는 섹션 (예 : 회계에서 일반적으로 사용됩니다. 일반적으로 초등학교 수학 수업에서 가르치는 것입니다.” 이것은 전 세계적으로 합의 된 규칙이 아니라 가장 일반적인 규칙이라는 것을 인정하는 것 같습니다.

개인적으로, 나는 학교에서 그 규칙을 배운 적이 없습니다. 반올림에 대한 나의 이해는 숫자의 부호에 관계없이 항상 .5가 반올림된다는 것입니다. 분명히 Java의 저자는 같은 이해를 가지고 있습니다. 이것은 비대칭 산술 반올림입니다.

다른 도구와 언어는 잠재적으로 다른 반올림 체계를 사용합니다. Excel은 분명히 대칭 방법을 사용합니다.

(전반적으로, 나는 당신이 Wikipedia와 경험 사이의 갈등을 발견하면 다른 곳에서 정보를 찾는 것이 좋습니다. Wikipedia는 완벽하지 않습니다.)

가치가있는 것에 대해 java.math.bigdecimal 이런 종류의 것을 더 많이 제어 해야하는 경우 선택 가능한 반올림 모드가 있습니다.

당신이 인용하는 Wikipedia 기사는 그것이 반올림하는 유일한 방법이라고 말하지 않습니다. 또한이 기사에서 언급 한 것은 몇 가지 대안이 있습니다 (불행히도 Java의 반올림 방법을 설명하는 것은 없습니다. 비록 JavaScript가하는 일을 나타내는 경우 "비대칭 산술 반올림"이라고 부르더라도).

당신은 당신의 방법을 결정해야합니다 원하다 숫자가 둥글고 그 방법을 사용하십시오. Java의 구현이 그것과 일치한다면 훌륭합니다. 그렇지 않으면 스스로 구현해야합니다.

Javadocs에 따르면 :

가장 가까운 것을 반환합니다 long 논쟁에. 결과는 1/2를 추가하고 결과의 바닥을 가져 가서 결과를 입력하여 정수로 반올림됩니다. long. 다시 말해, 결과는 표현식의 값과 같습니다.

(long)Math.floor(a + 0.5d)

대회는 반올림하는 것입니다. Wikipedia가 잘못된 것 같아요. 그러나 Microsoft는 컨벤션이 아닌 -4로 반올림하기 때문에 잘못된 것으로 나타났습니다 (수학 박사 학위를받은 사람과 확인했습니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top