Go에서 간단한 분할을 수행하려고합니다.
fmt.Println(3/10)
0.3 대신 0을 인쇄합니다. 이건 좀 이상 해요. 누군가가 그 이유를 공유해 주시겠습니까? Go에서 다른 산술 연산을 수행하고 싶습니다.
감사
답변:
표현식 3 / 10
은 유형이 지정되지 않은 상수 표현식입니다. 사양 은 상수 표현식에 대해 이렇게 말합니다.
이진 연산의 피연산자가 다른 종류의 유형이 지정되지 않은 상수 인 경우 연산 및 부울이 아닌 연산의 경우 결과는이 목록의 뒷부분에 나오는 정수, 룬, 부동 소수점, 복합 유형을 사용합니다.
때문에 3
하고 10
지정되지 않은 정수 상수이며, 식의 값 (지정되지 않은 정수이고, 0
이 경우에).
피연산자 중 하나는 부동 소수점 상수에 대한 결과에 대한 부동 소수점 상수 여야합니다. 다음 표현식은 유형이 지정되지 않은 부동 소수점 상수로 평가됩니다 0.3
.
3.0 / 10.0
3.0 / 10
3 / 10.0
형식화 된 상수를 사용할 수도 있습니다. 다음 표현식은 float64
상수로 평가됩니다 0.3
.
float64(3) / float64(10)
float64(3) / 10
3 / float64(10)
위의 표현식을 인쇄하면 0.3
. 예를 들어, fmt.Println(3.0 / 10)
인쇄 0.3
.
fmt.Println(float64(3) / float64(10))
제공합니다 0.3
.