社区
C语言
帖子详情
浮点数是如何储存的?
「已注销」
2012-02-12 09:29:42
为什么实用浮点数的时候有时候会丢失精度?希望各位会的大神们能够详细解答一下。
...全文
427
16
打赏
收藏
浮点数是如何储存的?
为什么实用浮点数的时候有时候会丢失精度?希望各位会的大神们能够详细解答一下。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
「已注销」
2012-02-20
打赏
举报
回复
32位采用的是IEEE754
「已注销」
2012-02-20
打赏
举报
回复
明白了~~
今天老师讲了
赵4老师
2012-02-17
打赏
举报
回复
用10进制小数不能精确表示某些三进制小数0.1(3)=0.33333333333……(10)
同理,用二进制小数也不能精确表示某些10进制小数。
「已注销」
2012-02-16
打赏
举报
回复
[Quote=引用 10 楼 c090869 的回复:]
引用 5 楼 fengzshizhe 的回复:
引用 4 楼 arnold9009 的回复:
0.1 = 0.0 0011 0011 0011 0011 0011 0011 .....(无限循环)
那为什么0.1的表示形式是这样的呢?
因为 0.1=1.0/16 1.0/32 1.0/(32*16) 1.0/(32*32)........
[/Quote]分母是什么意思…?怎么来的…
「已注销」
2012-02-16
打赏
举报
回复
[Quote=引用 10 楼 c090869 的回复:]
引用 5 楼 fengzshizhe 的回复:
引用 4 楼 arnold9009 的回复:
0.1 = 0.0 0011 0011 0011 0011 0011 0011 .....(无限循环)
那为什么0.1的表示形式是这样的呢?
因为 0.1=1.0/16+1.0/32+1.0/(32*16)+1.0/(32*32)........
[/Quote]分母是什么意思…?怎么来的…
goodwithcode
2012-02-12
打赏
举报
回复
二进制、?
duyufeng1995
2012-02-12
打赏
举报
回复
fu点型变量在计算机内存中占用4字节(Byte),即32-bit
seucs
2012-02-12
打赏
举报
回复
等你学过数据在计算机中的存储方式后就自然明朗了,知识需要一点一滴的积累的
「已注销」
2012-02-12
打赏
举报
回复
[Quote=引用 4 楼 arnold9009 的回复:]
0.1 = 0.0 0011 0011 0011 0011 0011 0011 .....(无限循环)
[/Quote]
那为什么0.1的表示形式是这样的呢?
Arnold9009
2012-02-12
打赏
举报
回复
lz看一下IEEE754浮点数标准吧
IEEE规定的浮点数的机器表示:
32位机器的 float 是4字节的,共32位。
第1位是符号位,接着8位指数位,接着23位基数位。
以5.1为例。
5 = 101 (2进制)
0.1 = 0.0 0011 0011 0011 0011 0011 0011 .....(无限循环)
所以 5.1 = 101.0 0011 0011 0011 0011 0011 0011 0011 0011 ...
5.1= 1.010 0011 0011 0011 0011 0011 0011 0011 0011 0011... * 2^2
因为第一位总是为1,如果是0,就移动小数点直到是非0的,所以第一位的1丢弃。
得到 010 0011 0011 0011 0011 0011 0011 0011 0011....
取23位 得到 0100 0110 0110 0110 0110 011
接着看指数部分
指数是2, 根据规定,指数统一+127再转换为无符号8位2进制数,
2+127=129 (1000 0001)
存储的时候指数部分存储在基数之前,这样就有31位了,
因为5.1是正的,所以符号为是0,存储在指数部分之前
这样就得到 0100 0000 1010 0011 0011 0011 0011 0011
caddor
2012-02-12
打赏
举报
回复
fpu,浮点数运算,在汇编中有介绍,蛮复杂的,
汇编一般先将整形,后将 浮点数
「已注销」
2012-02-12
打赏
举报
回复
那什么事浮点寄存器,浮点寄存器是怎样操纵的?
[Quote=引用 1 楼 ghj123h 的回复:]
引用 《C程序设计》
浮点数在浮点寄存器中,以指数型是存在,前面是小数,后面是指数。
由于浮点寄存器大小有限,所以会丢失精度
++
[/Quote]
正在无聊中
2012-02-12
打赏
举报
回复
[Quote=引用 《C程序设计》]
浮点数在浮点寄存器中,以指数型是存在,前面是小数,后面是指数。
由于浮点寄存器大小有限,所以会丢失精度
[/Quote]
++
如此美丽的你
2012-02-12
打赏
举报
回复
看<<深入理解计算机系统>>
c090869
2012-02-12
打赏
举报
回复
[Quote=引用 5 楼 fengzshizhe 的回复:]
引用 4 楼 arnold9009 的回复:
0.1 = 0.0 0011 0011 0011 0011 0011 0011 .....(无限循环)
那为什么0.1的表示形式是这样的呢?
[/Quote]
因为 0.1=1.0/16+1.0/32+1.0/(32*16)+1.0/(32*32)........
bluewanderer
2012-02-12
打赏
举报
回复
float类型
最高位是符号位,后面8位是指数,最后23位是2进制有效数字的小数部分,一共32位。
符号位0表示正数,1表示负数。指数表示有效数字要乘以2的多少次方,127表示0次方,126表示-1次方,128表示1次方,0是无穷小,255是无穷大。有效数字整数部分永远是1,所以省略,加上23位小数部分一共24位有效数字。
double类型,差不多区别是指数一共11位,有效数字小数部分52位,一共64位。
关于C语言
浮点数
的存储
主要是介绍
浮点数
在C语言中的比较存储方式,这个可以探讨一下,与存储整型不同
关于
浮点数
的精度问题
关于
浮点数
的精度问题,对于了解和学习C语言有一定帮助
TMS320C3x
浮点数
简介、IEEE754的32位转VC33的32位
浮点数
算法、IEEE754的64位
浮点数
转VC33的40位
浮点数
算法
本文档简介了TMS320C3x
浮点数
简介、IEEE754的32位转VC33的32位
浮点数
算法、IEEE754的64位
浮点数
转VC33的40位
浮点数
算法;给相关TI的DSP开发工程师提供开发参考。
float_2_char.zip_C51 float转char_单片机
浮点数
_
浮点数
char_
浮点数
转换_
浮点数
转换
单片机在通信中,
浮点数
的处理往往容易出错,本代码解决单片机通信时的
浮点数
据转换处理,包括
浮点数
转换成char ,和char转成float类型
浮点数
转换工具(十六进制转
浮点数
)
非常适用的小工具,绿色软件,不用安装,
浮点数
转换工具(十六进制转
浮点数
)
C语言
70,026
社区成员
243,244
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章