浮点数不能进行相等性运算的原因

浮点数在计算机中以特定方式存储,包括符号、处理过的指数和小数部分。例如,123.123的内存表示为:符号0,指数10000110,小数.11101100011111011111001。这种存储方式导致浮点数的精度问题,使得直接比较浮点数相等可能不准确。文章提供了一个理解浮点数存储的视角,并推荐了一个深入讲解的博客链接。
摘要由CSDN通过智能技术生成
最近看扎瓦的时候看到了对浮点数的介绍,并且指明浮点数不能进行相等性运算,这个在接触c的时候就知道了,
但是一直不知道为什么。具体的原因不知道也不影响使用,但是不符合我想走的学院派风格,所以大概的看了看。


现在的浮点数在内存中的表示方法有IEEE规定。也不知道为什么是电子电气规定计算机的事。。。

这里写图片描述

不管是float还是double都是以这种形式存储的。

sign表示符号位,0正 1负应该不陌生,至于后面的exponent,fraction当时老师也没有说,现在我就掰一掰吧。

这里写图片描述

以一般的64位机为例

float占4个字节,32位。同理,double8个字节64位。
            sign   exponent    fraction
    float   1         8           23            32
    double  1         11          53            64

这样在内存中存储的形式就很明了了,接下在接解释为什么这样存。

百度百科上是这么解释的:

*二进制浮点数是以符号数值表示法格式储存,将最高效位元指定为符号位元(sign bit);“指数部份”,
即剩下的f位元,为有效位数(significand)减掉有效位数本身的最高效位元。*
</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值