社区
C语言
帖子详情
谁能详细讲解一下float与double都分别怎么使用?
jun362415472
2010-05-23 10:05:18
float与double它们本质的区别在是它们所占的内存大小与其精度。
但在好多场合使用float 不行,使用double却可以,就连就简单的
float i=6.0;也会出现warnning
...全文
5553
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
的区别
最近为了看
一下
float
的精确度仔细看了
一下
这三种数据在内存中的样子,看了
一下
别人的博客发现大家对精度都有这不同的定义,我自己也简单画了
一下
。 下面来主要
讲解
一下
int、
float
与
double
三者的区别与详解 一、int(最简单的一种) int数据类型在内存中占用了4个字节byte(4*8个bit比特)就是32个比特位。第一位代表int的正负,后31位存储数据。当int取最大值时相当于31个1(1*2^30+1*2^29+1*2^28+....+1*2^0)可以转化为有32位切为1其他为0之后再减去
Float
和
Double
的
讲解
java中
Double
和
Float
之间的转化及其
double
和
float
之间的区别
深入理解浮点数存储:
double
与
float
详解
在计算机科学中,浮点数的精度指的是该数表示的值与实际值之间的接近程度。对于
float
和
double
类型,精度通常由二进制位数来决定。精度在很大程度上影响着数值计算的结果,尤其是涉及到连续运算的情况,如求解微分方程或进行连续积分。精度不足可能会导致结果出现明显的误差,甚至在某些情况下引发计算错误。举例来说,当进行一系列数学运算时,如果数据类型的精度不足,那么每一步运算产生的小误差会逐渐累积,导致最终结果与预期有较大差异。
C/C++编程笔记:数据类型中
float
和
double
的区别!细节
讲解
为了表示浮点数,我们
使用
float
,
double
和long
double
,有什么不同 ?
double
的精度是
float
的2倍。
float
是32位IEEE 754单精度浮点数1位符号,(8位为指数,23 *为值),即
float
具有7位十进制数字精度。
double
是64位的IEEE 754双精度浮点数(符号1位,指数11位,值52 *位),即
double
具有15位十进制数字的精度。 让我们举个例子: 对于二次方程x2 – 4.0000000 x + 3.9999999 = 0,精确到10个有
Java在终端中实时计算时
使用
float
还是
double
?
我想问下大家当初选择做程序员的初衷是什么?有思考过这个问题吗?高薪?热爱?既然入了这行就应该知道,这个行业是靠本事吃饭的,你想要拿高薪没有问题,请好好磨练自己的技术,不要抱怨。有的人通过培训可以让自己成长,有些人可以通过自律强大的自学能力成长,如果你两者都不占,还怎么拿高薪?架构师是很多程序员的职业目标,一个好的架构师是不愁所谓的35岁高龄门槛的,到了那个时候,照样大把的企业挖他。为什么很多人想进阿里巴巴,无非不是福利待遇好以及优质的人脉资源,这对个人职业发展是有非常大帮助的。
C语言
70,026
社区成员
243,244
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章