24小时热门版块排行榜    

查看: 2705  |  回复: 4
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

miaoer2003

铁虫 (小有名气)

[求助] 请问,单精度实型变量和双精度实行变量有何区别?

麻烦前辈给我举个例子说明一下,我刚开始看C程序的书,问题可能有些弱 ,谢谢了!!!
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

longxianyue

新虫 (初入文坛)

【答案】应助回帖

就是我们所说的有效位数(有效数字的个数)不同,都是用来表示实数型数字的(通常用来表示小数)。楼上说的我给你举个例子,例如:3.3+3.55结果应以有效位多的算。这就是楼上说的只要有一个float或double结果就是double的原因了。不用管它,等你学深了就会明白的。回答的有不当之处请见谅。
胸有凌云志,无高不可攀。
4楼2012-11-04 13:30:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 5 个回答

miaoer2003

铁虫 (小有名气)

追问,书上写:
如果参加+ - * / 的两个数中有一个数为float 或double 型,则结果都是double型,因为系统将所有foalt型数据都先转换为 double型,然后进行计算。这是为了提高运算精度。  
看不大懂这一句。。。。
2楼2012-06-23 19:54:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

感谢参与,应助指数 +1
区别就是精度与范围有区别,双精度都比单精度高一些,这个不必深究,你就知道要表示小数的时候就用float/double就好了,int只能表示整数

至于隐式类型转换就跟范围有关,例如float能表示[-m,m)区间,double能表示[-n,n)区间,n>m
那么float a和double b运算的时候,a会被转为double
因为double范围大,溢出的可能性小一些,
想象一个非常接近m的float和一个大于m的double相加
如果结果还是float就会溢出,但是如果是double就"可能"不会
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
3楼2012-06-23 22:30:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jxaa047264

铁虫 (初入文坛)

【答案】应助回帖


jjdg: 金币+1, 感谢解释 2012-11-08 10:54:08
这个, 说白了就是计算机不能完全无损精度的表示一个小数, 现代计算机结构小数的存储方式一般分为符号位, 指数位和小数位.
单精度float有4个字节, 总长32位, 双精度double有8个字节, 总长64位, 因为小数位存的比单精度多, 所以, 在精度上能保证比单精度更精确啦
5楼2012-11-08 09:28:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见