double与float的区别

baiye1134 2010-03-22 11:48:03
我知道double是双精度,也知道float是单精度 ,
但是我定义一个数,如:
float i=2.3;
最后的程序就会出现worn。。
要求我换成double(好像如此)、
但是如果 是2.0的话,就没问题,这是怎么回事呢?
...全文
154 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
cocat 2010-03-23
  • 打赏
  • 举报
回复
学习了

要么float f=2.3f;
要么double d=2.3;
baiye1134 2010-03-23
  • 打赏
  • 举报
回复
嗯 。。我明白 了。。是会默认的啊,我开始一直牛角尖于2.3是单精度 还是双精度。现在看来是一种默认的double啊。。谢谢大家了。在些拜谢各位
lovesi3344 2010-03-23
  • 打赏
  • 举报
回复
《exceptional c++ style 》第193页

质量不错的编译器在你试图进行一些未定义操作时会提出警告
例如,将一个比float所能表示的最大值还大或者比最小值还小的double值转换成float;
而优秀的编译器则会在你试图进行一些有定义但会损失信息精度的操作时提出警告
例如,试图将一个处于float所能表示的数值范围之间,却又不能被float精确表示的double值转换成float.
lovesi3344 2010-03-23
  • 打赏
  • 举报
回复
楼主可以比较一下这两段程序 这是《exceptional c++ style 》第191页 上给出的


//使用double,程序运行就一秒
#include<iostream>
using namespace std;
int main()
{
double x = 1e8;
while(x>0)
--x;
system("pause");
return 0;
}

//使用float,程序运行时间可能一秒,也可能永远 在我的环境下运行得不到结果
#include<iostream>
using namespace std;
int main()
{
float x = 1e8;
while(x>0)
--x;
system("pause");
return 0;
}
yuzl32 2010-03-23
  • 打赏
  • 举报
回复
float i= 2.3; //默认为double型,用2.3f指定float类型
lovesi3344 2010-03-22
  • 打赏
  • 举报
回复
《exceptional c++ style 》第192页

.......
这就意味着一个double类型的常量可以被隐式地(也就是无提示地)转换成一个float类型的常量,
即使该转换会引起精度的损失(数据,信息,知识,状态,意义等)。
之所以允许这种转换是考虑到与C的兼容性和可用性,但在进行浮点操作时,应谨记这些相关问题。
jackyjkchen 2010-03-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lovesi3344 的回复:]
看《exceptional c++ style 》第191页到193页
即第30条 要么double要么彻底完蛋
[/Quote]
同意,扔掉TC之后就没用过float
lovesi3344 2010-03-22
  • 打赏
  • 举报
回复
看《exceptional c++ style 》第191页到193页
即第30条 要么double要么彻底完蛋
huanmie_09 2010-03-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 baiye1134 的回复:]
我知道double是双精度,也知道float是单精度 ,
但是我定义一个数,如:
float i=2.3;
最后的程序就会出现worn。。
要求我换成double(好像如此)、
但是如果 是2.0的话,就没问题,这是怎么回事呢?
[/Quote]
浮点型常量如2.3被认为是双精度浮点数.
双精度浮点数表示的范围比单精度浮点数要广。
float i=2.3;
这样赋值相当于是将一个双精度浮点数赋给一个单精度浮点数,可能会引起数据丢失,因此,有的编译器会提示警告。
jackyjkchen 2010-03-22
  • 打赏
  • 举报
回复
很少用浮点数,但我的感官是带上0这个东西转换时要宽松,比如整形的0,可以做指针,其他数就不可以。

没有经验,纯属扯淡
阿发伯 2010-03-22
  • 打赏
  • 举报
回复
写成float i=2.3f;试试看

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧