数据类型之整型和浮点型

Go 的基本数据类型有:整型、浮点型、布尔型、字符串、数组、切片、结构体、函数、map、通道 channel 等。

1. 整型

整型分为两大类,按长度分为:int、int8、int16、int32、int64,对应的无符号整型:unit、uint8、uint16、uint32、uint64u 开头的表示无符号,只能都是正数

  • uint8:即 byte
  • int16:对应 C 语言中的 short
  • int64:对应 C 中的 long

之所以有这么多种类型,是因为 Go 是一门追求性能的语言,能节省内存就会节省。

  • int8:8 表示 8个 bit,能表示的数值个数有 2^8=256,有符号,范围为 -128 - 127
  • uint8:只有正数部分,范围 0-255
  • 若后面没有数字,如:int,那么它的大小是根据计算机的操作系统变化的,比如 32 位操作系统,int 和 uint 都占用 4 个字节,刚好 32 位,64 位操作系统则占用 8 个字节,总共 64 位

不同进制数字表示

package main

import "fmt"

func main() {
	var num int = 10      // 10进制表示法,常用
	var num1 int = 0b1100 // 2 进制表示法,0b 或 oB 开头
	var num2 int = 0o14   // 8 进制表示法,0o 或 0O 开头
	var num3 int = 0xC    // 16 进制表示法,0x 开头

	fmt.Printf("2 进制表示 %b,值:%d \n", num1, num1)
	fmt.Printf("8 进制表示 %o,值:%d \n", num2, num2)
	fmt.Printf("10 进制表示 %d,值:%d \n", num, num)
	fmt.Printf("16 进制表示 %X,值:%d \n", num3, num3)
	
	/*
	2 进制表示 1100,值:12
	8 进制表示 14,值:12
	10 进制表示 10,值:10
	16 进制表示 C,值:12
	*/
}

2. 浮点型

浮点型的整数和小数部分,都为 10 进制,不能由 8 或 16 进制表示,Go 提供了两种精度的浮点数:float32、float64

  • float32:单精度,存储占用 4 个字节,32 位,其中 1 位用来表示符号,8 位用来指数,剩下的 23 位表示尾数
    • 只能提供大约6个十进制数(表示后科学计数法后,小数点后6位)的精度
  • float64:双精度,存储占用8个字节,也即8*8=64位,其中1位用来符号,11位用来指数,剩下的52位表示尾数
    • 能提供大约15个十进制数(表示后科学计数法后,小数点后15位)的精度

取值范围

  • 常量 math.MaxFloat32 表示 float32 能取到的最大数值,大约是 3.4e38
  • 常量 math.MaxFloat64 表示 float64 能取到的最大数值,大约是 1.8e308
  • float32float64 能表示的最小值分别为 1.4e-454.9e-324

关于精度的示例:

float32 小数点后有效位数为 7 位,因此若表示的数字超过 7 位,那么其精度就有可能不准确:

var money float32 = 100000182
var money1 float32 = 100000187

fmt.Println(money)	// 1.00000184e+08
fmt.Println(money+5 == money1)	// false

3. 复数

复数型分为:complex64、complex128

  • complex64 的实部和虚部为32位
  • complex128 的实部和虚部为64位
package main

import (
	"fmt"
)

func main() {
	var c1 complex64 = 1 + 2i
	fmt.Println("c1:", c1)		// c1: (1+2i)

	var c2 complex128 = 1 + 2i	// c2: (1+2i)
	fmt.Println("c2:", c2)
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风老魔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值