(Go : basic) 5. int, float

Posted by : at

Category : Go


숫자형

package main

import "fmt"

func main() {
	//데이터 타입 : 숫자형
	//정수, 실수, 복소수
	//32bit, 64bit, unsigned(양수)
	//정수 : 8진수(0), 16진수(0x), 10진수

	var num1 int = 17
	var num2 int = -68
	var num3 int = 0631       // 8진수로 저장
	var num4 int = 0x32fa2c75 // 16진수로 저장

	fmt.Println("ex1 : ", num1)
	fmt.Println("ex1 : ", num2)
	fmt.Println("ex1 : ", num3)
	fmt.Println("ex1 : ", num4)
}
package main

import "fmt"

func main() {
	//데이터 타입 : 숫자형
	//정수형 문자 출력

	//예제1
	//아스키(영문)
	var char1 byte = 72
	var char2 byte = 0110
	var char3 byte = 0x48

	//유니코드(한글)
	var char4 rune = 50556   // 유니코드
	var char5 rune = 0142574 // 44032 (8진수)
	var char6 rune = 0xC57C  // 44032 (16진수)

	fmt.Printf("%c %c %c\n", char1, char2, char3)
	fmt.Printf("%d %d %d\n", char1, char2, char3)
	fmt.Printf("%d %o %x\n", char1, char2, char3)
	fmt.Printf("%c %c %c\n", char4, char5, char6)
	fmt.Printf("%d %d %d\n", char4, char5, char6)
	fmt.Printf("%d %o %x\n", char4, char5, char6)
}
package main

import "fmt"

func main() {
	//데이터 타입 : 숫자형
	//실수형(부동소수점)
	//float32(7자리), float64(15자리)

	//예제1
	// 소수점 사용
	var num1 float32 = 0.14
	var num2 float32 = .75647
	var num3 float32 = 442.0378373
	var num4 float32 = 10.0

	// 지수 표기법
	var num5 float32 = 14e6
	var num6 float64 = .156875E+3
	var num7 float64 = 5.32521e-10

	fmt.Println("ex1 : ", num1)
	fmt.Println("ex1 : ", num2)
	fmt.Println("ex1 : ", num3)
	fmt.Println("ex1 : ", num4-0.1)          //주의1
	fmt.Println("ex1 : ", float32(num4-0.1)) //주의2
	fmt.Println("ex1 : ", float64(num4-0.1)) //주의3
	fmt.Println("ex1 : ", num5)
	fmt.Println("ex1 : ", num6)
	fmt.Println("ex1 : ", num7)
}
package main

import "fmt"

func main() {
	//데이터 타입 : 숫자형
	//복소수 형(complex number)
	//complex64(32bit 실수 + 허수)
	//complex128(64bit 실수 + 허수)

	//예제1
	var num1 complex64 = 5 + 7i
	num2 := 8 + 1i
	num3 := complex(3, 2) //complex128
	var num4 complex128 = 9 + 3i
	num5 := complex64(2 + 3i)

	fmt.Println("ex1 : ", num1)
	fmt.Println("ex1 : ", num2)
	fmt.Println("ex1 : ", num3)
	fmt.Println("ex1 : ", num4)
	fmt.Println("ex1 : ", num5)

	//예제2
	//real() : 실수부 출력
	//imag() : 허수부 출력
	fmt.Println("ex2 : ", num1, real(num1), imag(num1))
	fmt.Println("ex2 : ", num2, real(num2), imag(num2))
	fmt.Println("ex2 : ", num3, real(num3), imag(num3))
	fmt.Println("ex2 : ", num4, real(num4), imag(num4))
	fmt.Println("ex2 : ", num5, real(num5), imag(num5))
}

숫자연산

package main

import "fmt"
import "math"

func main() {
	//숫자 연산(산술, 비교)
	//타입이 같아야 가능
	//다른 타입끼리는 반드시 형 변환 후 연산
	//형 변환 없을 경우 예외(에러) 발생
	// +, -, *, /, %, >>, <<, &, ^..

	//예제1 : 최대값 확인
	var n1 uint8 = math.MaxUint8
	var n2 uint16 = math.MaxUint16
	var n3 uint32 = math.MaxUint32
	var n4 uint64 = math.MaxUint64

	fmt.Println("ex1 : ", n1)
	fmt.Println("ex1 : ", n2)
	fmt.Println("ex1 : ", n3)
	fmt.Println("ex1 : ", n4)
	fmt.Println("ex1 : ", math.MaxInt8)
	fmt.Println("ex1 : ", math.MaxInt16)
	fmt.Println("ex1 : ", math.MaxInt32)
	fmt.Println("ex1 : ", math.MaxInt64)
	fmt.Println("ex1 : ", math.MinInt8)
	fmt.Println("ex1 : ", math.MinInt16)
	fmt.Println("ex1 : ", math.MinInt32)
	fmt.Println("ex1 : ", math.MinInt64)
	fmt.Println("ex1 : ", math.MaxFloat32)
	fmt.Println("ex1 : ", math.MaxFloat64)

	//예제2 (형 변환)
	n5 := 100000 //int
	n6 := int16(10000)
	n7 := uint8(100)

	//fmt.Println("ex2 : ", n5+n6) //예외 발생(컴파일 에러)
	//fmt.Println("ex2 : ", n6+n7) //예외 발생(컴파일 에러)
	fmt.Println("ex2 : ", n5+int(n6))
	fmt.Println("ex2 : ", n6+int16(n7))
	fmt.Println("ex2 : ", n6 > int16(n7))
	fmt.Println("ex2 : ", n6-int16(n7) > 5000)
}
package main

import "fmt"

func main() {

	//예제1
	var n1 uint8 = 125
	var n2 uint8 = 90

	fmt.Println("ex1 : ", n1+n2)
	fmt.Println("ex1 : ", n1-n2)
	fmt.Println("ex1 : ", n1*n2)
	fmt.Println("ex1 : ", n1/n2)
	fmt.Println("ex1 : ", n1%n2)
	fmt.Println("ex1 : ", n1<<2)
	fmt.Println("ex1 : ", n1>>2)
	fmt.Println("ex1 : ", ^n1)

	//예제2
	var n3 int = 12
	var n4 float32 = 8.2
	var n5 uint16 = 1024
	var n6 uint32 = 120000

	//fmt.Println(n3 + n4)          //예외 발생(컴파일 에러)
	fmt.Println(float32(n3) + n4) //형 변환 후 계산
	fmt.Println(n3 + int(n4))     //소수 부분 값 손실
	fmt.Println(n5 + uint16(n6))  //형 변환에 의한 값 손실
}
package main

import "math"

func main() {

	//예제1(오버플로우 에러 : 범위 초과)
	var n1 uint8 = math.MaxUint8 + 1
	var n2 uint16 = math.MaxUint16 + 1
	var n3 uint32 = math.MaxUint32 + 1
	var n4 uint64 = math.MaxUint64 + 1

	//예제2(오버플로우 에러 : 범위 미만)
	var n1 uint8 = -1
	var n2 uint16 = -1
	var n3 uint32 = -1
	var n4 uint64 = -1
}

About Taehyung Kim

안녕하세요? 8년차 현업 C++ 개발자 김태형이라고 합니다. 😁 C/C++을 사랑하며 다양한 사람과의 협업을 즐깁니다. ☕ 꾸준한 자기개발을 미덕이라 생각하며 노력중이며, 제가 얻은 지식을 홈페이지에 정리 중입니다. 좀 더 상세한 제 이력서 혹은 Private 프로젝트 접근 권한을 원하신다면 메일주세요. 😎

Star
Useful Links