社区
C语言
帖子详情
谁能详细讲解一下float与double都分别怎么使用?
jun362415472
2010-05-23 10:05:18
float与double它们本质的区别在是它们所占的内存大小与其精度。
但在好多场合使用float 不行,使用double却可以,就连就简单的
float i=6.0;也会出现warnning
...全文
5607
15
打赏
收藏
谁能详细讲解一下float与double都分别怎么使用?
float与double它们本质的区别在是它们所占的内存大小与其精度。 但在好多场合使用float 不行,使用double却可以,就连就简单的 float i=6.0;也会出现warnning
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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]
java中
Double
转
Float
java中
Double
转
Float
c语言
double
比较大小吗,C语言
double
和
float
实例分析
小数也称实数或浮点数。例如,0.0、75.0、4.023、0.27、-937.198 都是合法的小数。这是常见的小数的表现形式,称为十进制形式。除了十进制形式,也可以采用指数形式,例如 7.25×102、0.0368×105、100.22×10-2 等。任何小数都可以用指数形式来表示。C语言中的小数也有这两种表示形式。在书写时,十进制形式和数学中的一样,指数形式有所差异。在C语言中小数的指数形式为...
Scala,浮点数字面量,不能把
double
给
float
Scala浮点数字面量有
float
和
double
默认是
double
val c:
Float
= -3.2 这个语句会报错,因为-3.2是
double
val c:
Float
= -3.2f 这个语句可以 第三章 Scala基础——变量定义与基本类型
VC++6.0 MFC中CString与int、
double
、
float
等数据互相转化
C++中doulbe/
float
/int转为CString的方法 在MFC程序中,可以
使用
Format方法方便的实现int、
float
和
double
等数字类型转换为CString字符串。以下是CString的Format支持的格式说明: C++表达方式 数据类型 %c 单个字符 %d 十进制整数(int) %ld 十进制整...
C语言程序设计入门——浮点类型变量
float
与
double
float
的有效数字 #include <stdio.h> int main() {
float
a; a=3123.1415926; printf("a=%f\n",a);//a是单精度浮点类型变量,只能提供6~7位有效数字 //因此3123.141后面的几个小数并不是精确的 return 0; } ...
C语言
70,038
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章