Float Zero Division에 대한 Go 컴파일러 오류
Go 프로그래머는 그림과 같이 부동 소수점 숫자를 0으로 나눌 때 컴파일러 오류가 발생할 수 있습니다. 아래 코드 조각에서:
<code class="go">func main() { var y float64 = 0.0 var x float64 = 4.0 / y fmt.Println(x) }</code>
이 코드는 다음과 유사한 오류를 반환합니다.
prog.go:9:22: division by zero
오류 이해
컴파일러 경고를 인쇄하는 대신 컴파일러가 오류를 생성하는 이유에 대해 질문합니다. 그 답은 Go의 숫자 상수의 특성에 있습니다.
숫자 상수의 정밀도
Go 숫자 상수는 임의의 정밀도를 가지며 오버플로되지 않습니다. 이는 무한대 또는 -0과 같은 IEEE-754 값을 표현할 수 없음을 의미합니다.
0으로 나누기
0으로 나누기는 수학에서 정의되지 않은 연산이며 다음과 같은 문제가 발생합니다. IEEE-754에서는 무한대입니다. 그러나 Go 숫자 상수에는 무한대 표현이 부족하므로 컴파일러는 코드에서 정의되지 않은 상황을 피하기 위해 0으로 나누기를 오류로 처리합니다.
Infinity에 대한 대안
If 계산을 위해 무한대 값이 필요하면 math.Inf 함수를 사용할 수 있습니다. 예:
<code class="go">var x float64 = math.Inf(1)</code>
위 내용은 Go 컴파일러가 경고 대신 부동 소수점을 0으로 나누면 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!