문제

나는 수학자가 아니지만 무한대로 나누는 것은 나쁜 수학이거나 최소한 비현실적이라고 생각합니다.

나는 Firefox에서 완벽하게 잘 작동하는 JavaScript를 디버깅하는 데 30 분을 소비하지만 IE에서 오류를주었습니다. 나는 그것이 특정 시나리오에서 IE에게 무한대로 나누라고 요구하고 있었기 때문에 마침내 깨달았다는 것을 깨달았습니다.

그래서, 나는 그것을 고쳤다. 그러나 나는 왜 Firefox가 그것에 대해 괜찮은지 궁금하다. 분명히, 이것은 프로그래밍보다 수학 문제 일 수 있습니다. ;)

도움이 되었습니까?

해결책

IE의 버그라고 생각합니다. IEEE 수학의 규칙에 따르면 N/inf = 0 (N! = 0의 경우). 따라서 IE가 이것에 대해 크로크를한다면, 그것은 IE의 문제입니다. 반면에, 일반 수학 연산에서 INF를 사용하는 것은 문제가 있으며, 코드가 처음에 의존하지 않으면 더 나을 것입니다.

왜 위험합니까? IEEE 754에 따르면, 우선.

1/0 = Inf
1/-0 = -Inf

그러나 우리는 0 = -0을 알고 있습니다

Inf = -Inf

분명히 바람직하지 않습니다. IEEE는 어쨌든 INF를 평범한 숫자로 만드는 것을 의미하지 않았습니다. INF와 NAN은 고유 한 제한된 정밀도 및 오버 플로우 문제가있는 컴퓨터에서 부동 소수점 산술을 만들기 위해 존재하며, 가장 간단한 예를 들어, 실수 세트는 첨가에 따라 닫힙니다 (항상 두 실수 숫자를 추가하면 항상 결과가 추가됩니다. 또 다른 실수). 유한 프레임 플로트로 그렇게하면 두 숫자를 추가하면 오버플로가 발생하는 경우가 있습니다. 이것을 오류 조건으로 취급하지 않기 위해 IEEE는 두 가지 추가 기호, INF와 NAN과 그들의 행동 규칙 세트를 도입했습니다. 이제 수학적 작동의 결과는 항상 숫자, inf, 또는 nan이며 결과가 이해되는지 여부는 사용자에게 맡겨집니다.

다른 팁

무한대로 나누는 것은 괜찮습니다. 0입니다.

무한대를 무한대로 나누지 않는 한 정의되지 않은 경우 (일반적으로)

무한대로 숫자를 나누는 것은 수학적 관점에서 완벽하게 합리적입니다. 실제로 0에 도달하지 않고 숫자는 0에 가까운 숫자입니다.

소프트웨어 관점에서, 무한대는 차별적으로 표현 가능한 가치가 아니기 때문에 이것은 훨씬 더 어렵다. 내 생각에 행동의 차이는 디자인 결정에 근거한 것입니다.

Firefox에서는 아마도 모든 실제 목적을 위해이 결과가 필요한 것에 효과가 있기 때문에 0의 값을 반환하기로 선택했을 것입니다.

반면에, 개발자들은 자신이 개별 답변을 할 수 없다는 것을 알고 계산할 수 없다는 의식적인 결정을 내렸다.

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