01-数据类型之值类型之数值
1、数值类型
数值类型指基本类型中的:整型、浮点型、复数。
2、整数
整数类型有无符号(如 int)和带符号(如 uint)两种,这两种类型的长度相同,但具体长度取决于不同编译器的实现。
- int8、int16、int32 和 int64 四种有符号整数类型,分别对应 8、16、32、64bit 大小的有符号整数
- uint8、uint16、uint32 和 uint64 对应四种无符号整数类型。
有符号类型:
1 |
|
无符号类型:
1 |
|
注意:
- 上述类型的变量由于是不同类型,不允许互相赋值或操作
- Go 默认的整型类型是 int
- 查看数据所占据的字节数方法:
unsafe.Sizeof()
3、浮点类型
3.1、浮点类型的分类
1 |
|
由上看出:
- 浮点数是有符号的,浮点数在机器中存放形式是:浮点数=符号位+指数位+尾数位
- 浮点型的范围是固定的,不受操作系统限制
.512
这样数可以识别为0.512
- 科学计数法:
- 5.12E2 = 5.12 * 102
- 5.12E-2 = 5.12 / 102
3.2、精度损失
float32 可以提供大约6个十进制数的精度,float64 大约可以提供15个十进制的精度(一般选择float64)
1 |
|
3.3、浮点数判断相等
使用 == 号判断浮点数,是不可行的,替代方案如下:
1 |
|
4、复数
Go 中复数默认类型是complex128(64位实数+64位虚数)。如果需要小一些的,也有complex64(32位实数+32位虚数)。
复数的形式为RE + IMi
,其中RE是实数部分,IM是虚数部分,而最后的i是虚数单位。
如下所示:
1 |
|
5、NaN 非数
go 中的NaN
非数:
1 |
|
注意:
- 函数
math.IsNaN
用于测试一个数是否是非数NaN, - 函数
math.NaN
则返回非数对应的值。 - 虽然可以用
math.NaN
来表示一个非法的结果,但是测试一个结果是否是非数 NaN 则是充满风险的,因为 NaN 和任何数都是不相等的。
1 |
|
01-数据类型之值类型之数值
https://flepeng.github.io/021-Go-31-Go-基础-01-数据类型之值类型之数值/