C++中float和double的区别

下面是代码:#include<iostream>usingnamespacestd;template<typenameG>Gmax(constG*r_array,ints... 下面是代码:
#include<iostream>
using namespace std;
template<typename G>G max(const G *r_array,int size) //模板,选数组最大值
{
G max_val=r_array[0];
int i;
for(i=1;i<size;i++)
{
if(max_val<r_array[i])
max_val=r_array[i];
}
return max_val;
}
float b[6]={1.1,2.1,3.1,4.1,5.1,50.1}; //这里为什么要换成double,和float有什么区别

int main()
{
float y=max(b,6); //float改成double

cout<<y<<endl;
return 0;
}
展开
 我来答
百度网友540fc64
推荐于2017-09-28 · TA获得超过1195个赞
知道小有建树答主
回答量:339
采纳率:88%
帮助的人:85.6万
展开全部
两者区别主要在分配存储空间和描述浮点数所拥有的有效数字位数。通常情况下:
1,大多数情况下,编译器为float分配4字节,而为double则分配8字节。
2,float可提供6位有效数字,而double则可以提供15位有效数字。
所以在应用是需要注意定义数据的精度要求。
tian_a_no
2013-01-04 · TA获得超过733个赞
知道小有建树答主
回答量:254
采纳率:0%
帮助的人:128万
展开全部
是这样的, 你程序里的小数, 比如float b[6]={1.1,2.1,3.1,4.1,5.1,50.1};这一句.

所有已知的小数常量, 编译器编译的时候, 都默认把它处理为double型的. 所以最好用double. 当然不是必须, 用float也行.

举个例,float a=7.3*1.0/3;
得到的结果为,将表达式右边按照double型数据计算得到的结果, 再转化成float型的值.
而并不是, 将表达式右边直接按float型计算得到的结果值.

由于这一点细微的差别,对于某些极特殊的值可能结果略有不同.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Prokyo
推荐于2017-09-10 · 超过11用户采纳过TA的回答
知道答主
回答量:28
采纳率:0%
帮助的人:27.1万
展开全部
你应该是用VC6编译的吧?我用g++ 4.6.3编译,无警告,结果正确。
VC6编译出警告是因为,VC6的编译器默认把小数当作const double类型,8个字节,而float是4个字节,当然会出警告。想要不出警告,1是改数组类型,2是在每个数字后面加一个“f”,告诉编译器把这个数字当作float类型处理
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
seraph_sigil
2013-01-04 · TA获得超过4434个赞
知道小有建树答主
回答量:442
采纳率:75%
帮助的人:159万
展开全部
不用改成double,你的代码我在linux下编译运行过,可以正常工作。不知道你遇到的是什么问题

float一般占用4个字节,double占用8个字节。
追问
是可以正常运行,但是会报warning,编译器自动把float用double替代了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
_whales
2013-01-04 · TA获得超过2279个赞
知道大有可为答主
回答量:1814
采纳率:85%
帮助的人:486万
展开全部
因为浮点常量如3.1;3.1f是double类型
不换也是可以,换了不会警告了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式