>백엔드 개발 >Golang >Go의 나눗셈 연산(/)이 때때로 소수 대신 0을 반환하는 이유는 무엇입니까?

Go의 나눗셈 연산(/)이 때때로 소수 대신 0을 반환하는 이유는 무엇입니까?

DDD
DDD원래의
2024-12-11 15:17:09328검색

Why Does Go's Division Operation (/) Sometimes Return 0 Instead of a Decimal?

Go에서의 나눗셈 연산

Go에서는 피연산자의 종류에 따라 나눗셈(/)이 다르게 수행됩니다. fmt.Println(3 / 10) 표현식의 결과가 0.3이 아닌 0인 이유를 이해하기 위해 Go의 유형 시스템을 자세히 살펴보겠습니다.

이 표현식의 피연산자는 유형이 지정되지 않은 정수 상수이며 Go에 따르면 언어 사양에 따라 유형이 지정되지 않은 상수를 사용한 산술 연산의 결과는 유형이 나타나는 순서에 따라 결정됩니다. 정수 상수는 부동 소수점 상수보다 앞에 있으므로 표현식은 정수 나누기로 평가되어 0이 됩니다.

부동 소수점 결과를 얻으려면 피연산자 중 하나 이상이 부동 소수점 상수여야 합니다. 이를 달성하려면 3.0 / 10.0, 3.0 / 10 또는 3 / 10.0을 쓸 수 있습니다. 처음 두 표현식은 유형이 지정되지 않은 부동 소수점 상수를 사용하고, 마지막 표현식은 정수 상수 3을 float64로 변환합니다.

또한 한 피연산자에 유형이 지정되지 않은 상수가 있고 다른 피연산자가 유형이 있는 피연산자인 경우 유형은 표현식은 입력된 피연산자에 의해 결정됩니다. 따라서 var i3 = 3 및 var i10 = 10은 fmt.Println(float64(i3) / float64(i10))을 사용하여 float64로 변환할 수 있습니다.

10.0과 같은 숫자 리터럴은 형식화되지 않은 부동 소수점 상수입니다. , i3 / 10.0 및 3.0 / i10과 같은 표현식은 여전히 ​​정수 나누기로 평가됩니다. 결과 유형을 결정하는 입력된 피연산자(i3 및 i10).

위 내용은 Go의 나눗셈 연산(/)이 때때로 소수 대신 0을 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.