Golang 浮点类型(float32、float64)在内存中的存储

本文介绍了Go语言中float32和float64在内存中的存储方式,包括正负号、尾数和指数的存储规则,以及指数的偏移量处理,探讨了浮点数精度问题的原因。
摘要由CSDN通过智能技术生成

在Go语言编程中,用来表示小数的有两种类型:

    float32(单精度类型,占据4个字节 byte,32个二进制位 bit)

    float64(双精度类型,占据8个字节 byte,64个二进制位 bit)

那么,计算机在内存中是如何存储浮点类型的呢?

我们下面就来从计算机中最小的单位 bit (二进制位)方面来详细分析:

我们知道,计算机中的数据,最终都需要转化成二进制数据来存储。

不管什么样的数据(文字、图片、视频、语音)存储到计算机中都会变成 0 1 这样的二进制代码

那么,首先,我们试着用二进制数据来表示一个小数:

转换成以 2 为底的科学计数法:

从上面我们可以观察到,对于任何数来说,表示成二进制科学计数法后,都成以转换成 1.xxx(尾数) * 2 的 n 次方(指数)。

这里需要注意到的一点是,比如上图中的十进制小数0.6,表示成二进制后变成了以1001循环的无限循环小数。

这便是浮点数有精度问题的根源之一

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值