整型和浮点型的区别_「Go」Go数据类型之整型和浮点型

不积跬步,无以至千里;不积小流,无以成江海。

码字不易,点赞再看。

Go语言中有丰富的数据类型,除了基本的整型、浮点型、布尔型、字符串外,还有数组、切片、结构体、函数、map、通道(channel)等。Go 语言的基本类型和其他语言大同小异。

整型

整型分为以下两个大类: 按长度分为:int8、int16、int32、int64 对应的无符号整型:uint8、uint16、uint32、uint64

其中,uint8 就是我们熟知的 byte 型(后续会介绍到),int16对应C语言中的short型,int64对应C语言中的long型。

f2a993996b31db43ededc306b8ab4028.png
特殊整型
90c280d0c4d85036cee6d8ed6d6cf126.png

注意:int 和 uint 的区别就在于一个 u,有 u 说明是 无符号,没有 u 代表 有符号。

注意事项: 由于 int和 uint 是根据操作系统变化的,所以在某些场景下,你应当避免使用 int 和 uint ,而使用更加精确的 int32 和 int64,比如在二进制传输、读写文件的结构描述(为了保持文件的结构不会受到不同编译目标平台字节长度的影响)

数字字面量语法(Number literals syntax)

出于习惯,在初始化数据类型为整形的变量时,我们会使用10进制的表示法,因为它最直观,比如这样,表示整数10.比如:

var num = 10

Go1.13版本之后引入了数字字面量语法,这样便于开发者以二进制、八进制或十六进制浮点数的格式定义数字,例如:

v := 0b00101101, 代表二进制的 101101,相当于十进制的 45。

v := 0o377,代表八进制的 377,相当于十进制的 255。

v := 0x1p-2,代表十六进制的 1 除以 2²,也就是 0.25。

而且还允许我们用 _ 来分隔数字,比如说:v := 123_456 等于 123456。

我们可以借助fmt函数来将一个整数以不同进制形式展示。

5f9d5237ef45f067f1008efea46e6ccc.png
4a53f172a1058c8ca44c80e1184db6fe.png
浮点型

浮点数类型的值一般由 整数部分小数点“.” 和 小数部分 组成。

其中,整数部分和小数部分均由10进制表示法表示。不过还有另一种表示方法。那就是在其中加入 指数部分。指数部分由“E”或“e”以及一个带 正负号 的10进制数组成。比如,3.7E-2表示浮点数0.037。又比如,3.7E+1表示浮点数37。

有时候,浮点数类型值的表示也可以被简化。比如,37.0可以被简化为37。又比如,0.037可以被简化为.037。

有一点需要注意,在Go语言里,浮点数的相关部分只能由10进制表示法表示,而不能由8进制表示法或16进制表示法表示。比如,03.7表示的一定是浮点数3.7。

float32 和 float64

Go语言支持两种浮点型数:float32float64

这两种浮点型数据格式遵循 IEEE 754标准: float32 的浮点数的最大范围约为 3.4e38,可以使用常量定义:math.MaxFloat32

float64 的浮点数的最大范围约为 1.8e308,可以使用一个常量定义:math.MaxFloat64

float32 也即我们常说的单精度,存储占用4个字节,也即4*8=32位,其中1位用来符号,8位用来指数,剩下的23位表示尾数

float64,也即我们熟悉的双精度,存储占用8个字节,也即8*8=64位,其中1位用来符号,11位用来指数,剩下的52位表示尾数

数值很大但精度有限

人家虽然能表示的数值很大,但精度位却没有那么大。

float32的精度只能提供大约6个十进制数(表示后科学计数法后,小数点后6位)的精度

float64的精度能提供大约15个十进制数(表示后科学计数法后,小数点后15位)的精度

超过精度的话 会造成精度丢失,比如:

82f7ab72c7a4a0ca712cc8827b591a2c.png

返回 True

点关注 不迷路

如果你从本篇内容有收获,求 点赞,求 关注,求 转发 ,让更多的人学习到。


如果本文有任何错误,请批评指教,不胜感激

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值