社区
C语言
帖子详情
谁能详细讲解一下float与double都分别怎么使用?
jun362415472
2010-05-23 10:05:18
float与double它们本质的区别在是它们所占的内存大小与其精度。
但在好多场合使用float 不行,使用double却可以,就连就简单的
float i=6.0;也会出现warnning
...全文
5546
15
打赏
收藏
谁能详细讲解一下float与double都分别怎么使用?
float与double它们本质的区别在是它们所占的内存大小与其精度。 但在好多场合使用float 不行,使用double却可以,就连就简单的 float i=6.0;也会出现warnning
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jun362415472
2010-05-25
打赏
举报
回复
thank you
shangqiuzuidong
2010-05-23
打赏
举报
回复
double精度比float高!所以好多场合使用float不行,因为精度不够...
但高精度的代价是占用更多的内存...
C标准规定浮点常量默认是double,要符合标准用后缀f或F
C/C++ codefloat f = 6.0f;
上楼的已经说得很清楚
fthislife
2010-05-23
打赏
举报
回复
[Quote=引用 3 楼 lbh2001 的回复:]
C标准规定浮点常量默认是double,要符合标准用后缀f或F
C/C++ code
float f = 6.0f;
[/Quote]
已经说清楚了。
float i=6.0;这样有warning的原因,安C标准 6.0 是double类型(默认的),把一个double隐式转float造成精度的损失,当然有warning了。而float f = 6.0f;这样 6.0f 是float 所以没问题
ameyume
2010-05-23
打赏
举报
回复
[Quote=引用 3 楼 lbh2001 的回复:]
C标准规定浮点常量默认是double,要符合标准用后缀f或F
C/C++ code
float f = 6.0f;
[/Quote]
up
还有就是楼上各位说的精度差别了。
hnzzgmc
2010-05-23
打赏
举报
回复
f,F
jianglutian
2010-05-23
打赏
举报
回复
有些编译器对double还有特殊优化。
一般来说float和double使用时候运算速度差别不是很大,为了保持精度建议使用后者。
当然对内存要求比较高的嵌入式需要好好斟酌一下
long double……不建议用,除非误差实在太大。。。
KevinHo
2010-05-23
打赏
举报
回复
LZ不会吧,应该不会提示这样的警告的。
double和float其实就是精度不同的浮点数,前者是双精度,后者是单精度。
要不然,你这么试试,float i = 6.0f; 看看这样还会不会报警告
ctwoz
2010-05-23
打赏
举报
回复
我是初学者,一般用double,float很少用。。。。。
lbh2001
2010-05-23
打赏
举报
回复
C标准规定浮点常量默认是double,要符合标准用后缀f或F
float f = 6.0f;
findcsdn
2010-05-23
打赏
举报
回复
什么场合用float不行? 只要精度合适,应该都可以吧!
你用什么编译器,我在Vc6上没有警告。
chaoliu1024
2010-05-23
打赏
举报
回复
double精度比float高!所以好多场合使用float不行,因为精度不够...
但高精度的代价是占用更多的内存...
fay8048
2010-05-23
打赏
举报
回复
精度不同,占用内存大小不同,至于不同硬件位数,用语言自己侧
cao_julians
2010-05-23
打赏
举报
回复
1.先说硬件层面:PC机的CPU中的浮点数运算器是80位的,称为long double型的,存在着一定的运算误差(在低位),存储时改用double(64位)类型就有足够的精度了,但用float(32位)类型存储就引入了很大的舍去误差。
2.由此标准库的数学函数不论是参数还是返回值的类型都选用double,不加后缀f的字面值(如3.1416)自动处理为double类型
3.当涉及到浮点数的迭代运算时,用float类型相当于用80位算、舍去低位用32位存,再用80位算、...
完全是浪费“资源”
==========================
而在ARM或51系列CPU中,有无硬件浮点数运算器,是多少位的,另当别论
笑遍世界
2010-05-23
打赏
举报
回复
笔误了一下改为:double 绝对值小于10e-308的数被处理成0值
笑遍世界
2010-05-23
打赏
举报
回复
很多楼上 都说的很清楚了。。。 还是应该看看课本的这个,然后自己写程序试一下吧。。
C编译器通常
默认浮点数是double
的,且float的运算也都会先转化为double再运算的(谭浩强的书中也说过),所以才有你所提到的warning。
从存储结构和算法上来讲,double和float是一样的,不一样的地方仅仅是float是32位的,double是64位的,所以double能存储更高的精度。 (当然这个位数和机器、编译器有关)
float数值范围约在-10e38~10e38,并提供7位有效数字位,绝对值小于10e38地数被处理成零值 double数值范围约在-10e308~10e308,并提供15~16位有效数字,绝对值小于10e308地数被处理成零值
其他原理可以看这里:http://dev.firnow.com/course/3_program/c++/cppsl/2008629/129103.html
[Quote=引用 10 楼 shangqiuzuidong 的回复:]
double精度比float高!所以好多场合使用float不行,因为精度不够...
但高精度的代价是占用更多的内存...
C标准规定浮点常量默认是double,要符合标准用后缀f或F
C/C++ codefloat f = 6.0f;
上楼的已经说得很清楚
[/Quote]
详细
讲解
int、
float
与
double
的区别
下面来主要
讲解
一下
int、
float
与
double
三者的区别与详解 一、int(最简单的一种) int数据类型在内存中占用了4个字节byte(4*8个bit比特)就是32个比特位。第一位代表int的正负,后31位存储数据。当int取最大值时...
Float
和
Double
的
讲解
java中
Double
和
Float
之间的转化及其
double
和
float
之间的区别
C/C++编程笔记:数据类型中
float
和
double
的区别!细节
讲解
为了表示浮点数,我们
使用
float
,
double
和long
double
,有什么不同 ?
double
的精度是
float
的2倍。
float
是32位IEEE 754单精度浮点数1位符号,(8位为指数,23 *为值),即
float
具有7位十进制数字精度。
double
是...
Java在终端中实时计算时
使用
float
还是
double
?
有的人通过培训可以让自己成长,有些人可以通过自律强大的自学能力成长,如果你两者都不占,还怎么拿高薪?架构师是很多程序员的职业目标,一个好的架构师是不愁所谓的35岁高龄门槛的,到了那个时候,照样大把的企业...
C++基础之
float
与
double
float
是单精度浮点数,在内存中占4个字节,小数点后7位。...有的编译器,所有的
float
运算内部都是转换成
double
型的,就算是2个
float
的运算,也是转换成
double
,结果再转回
float
。有一种说法是,
float
C语言
70,023
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章