>  기사  >  백엔드 개발  >  골랑 정수 나누기

골랑 정수 나누기

WBOY
WBOY원래의
2023-05-27 18:49:381194검색

Golang은 크로스 플랫폼, 동시 프로그래밍 및 강력한 유형 추론 기능을 갖춘 효율적인 프로그래밍 언어입니다. 정수 나눗셈은 프로그램 작성 시 기본 연산입니다. 이 기사에서는 Golang의 정수 나누기의 다양한 방법과 세부 사항을 살펴보겠습니다.

먼저 정수의 값 범위를 이해해야 합니다. Golang에서 int 유형의 길이는 운영 체제 및 아키텍처에 따라 다릅니다. 32비트 운영 체제에서 int 유형의 길이는 4바이트(32비트)이고 값 범위는 -2147483648~2147483647입니다. 64비트 운영 체제에서 int 유형의 길이는 8바이트(64비트)이고 값 범위는 -9223372036854775808부터 9223372036854775807입니다.

Golang에서는 정수 나누기가 정수 나누기와 부동 소수점 나누기의 두 가지 유형으로 나뉩니다. 정수 나누기의 결과는 정수형이고, 부동 소수점 나누기의 결과는 부동 소수점 유형입니다.

이제 각각 Golang의 정수 나누기를 소개하겠습니다.

  1. 나누기 연산자(/)

나누기 연산자(/)를 사용하여 나눌 때 Golang은 결과의 정확성을 유지하기 위해 최선을 다합니다. 두 정수가 모두 양수이거나 음수이면 결과도 정수입니다. 그러나 두 정수 중 하나가 음수이면 결과는 0으로 반올림됩니다(소수 부분은 잘림). 예:

fmt.Println(5 / 2)   // 输出 2
fmt.Println(5 / -2)  // 输出 -2
fmt.Println(-5 / 2)  // 输出 -2
fmt.Println(-5 / -2) // 输出 2

나누기 연산자의 결과가 예상한 것과 같지 않음을 알 수 있습니다. 이는 Golang이 잘림 작업을 수행하기 때문입니다. 정확한 결과를 얻으려면 부동 소수점 나누기를 사용할 수 있습니다.

  1. 바닥 나누기(math.FloorDiv)

바닥 나누기는 두 개의 정수를 나누고 가장 가까운 정수로 내림하는 것을 의미합니다. Golang에서는 math.FloorDiv 함수를 사용하여 층 나누기 연산을 수행합니다.

fmt.Println(math.FloorDiv(5, 2))   // 输出 2
fmt.Println(math.FloorDiv(5, -2))  // 输出 -3
fmt.Println(math.FloorDiv(-5, 2))  // 输出 -3
fmt.Println(math.FloorDiv(-5, -2)) // 输出 2

바닥 나누기를 이용하면 정확한 결과를 얻을 수 있지만, 바닥 나누기는 가장 가까운 정수로 내림되기 때문에 음수로 나눌 때는 주의가 필요합니다.

  1. 직접 유형 변환

직접 유형 변환은 간단하고 투박한 방법이지만 몇 가지 세부 사항에 주의해야 합니다. 예를 들어 두 정수를 부동소수점 숫자로 강제 변환한 후 나누거나, 나누기 결과를 정수형으로 강제 변환하는 등의 작업을 수행합니다.

var a, b int
a = 5
b = 2
fmt.Println(float64(a) / float64(b)) // 输出 2.5
fmt.Println(int(a / b))              // 输出 2
fmt.Println(int(float64(a) / float64(b))) // 输出 2

직접 유형 변환을 사용하면 정확한 결과를 얻을 수 있지만 유형 변환 과정에서 오버플로나 정밀도 손실이 발생하기 쉽습니다.

간단히 말하면 정수 나누기는 프로그래밍의 기본 연산입니다. Golang에서는 나누기 연산자, 바닥 나누기 함수 또는 직접 유형 변환을 사용하여 정수 나누기를 구현할 수 있습니다. 방법마다 세부 사항과 적용 시나리오가 다르므로 유연하게 사용해야 합니다. 동시에, 정확한 결과를 얻기 위해 음수를 나눌 때 반올림 문제에도 주의할 필요가 있습니다.

위 내용은 골랑 정수 나누기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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