| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 528 人关注过本帖
标题:关于double,int类型和浮点数,为什么?
只看楼主 加入收藏
境善
Rank: 2
等 级:论坛游民
帖 子:76
专家分:16
注 册:2012-10-29
结帖率:86.21%
收藏
已结贴  问题点数:1 回复次数:5 
关于double,int类型和浮点数,为什么?
图片附件: 游客没有浏览图片的权限,请 登录注册

第一行应该输出2,2
第二行应该输出2.000000,2.000000,可为什么不是呢?麻烦知道的解释一下,谢谢了
#include <stdio.h>
#include <math.h>

void main()
{
int m=5,k;
k=sqrt(m);
printf("%d,%d\n",k,sqrt(m));
printf("%f,%f\n",k,sqrt(m));
}
搜索更多相关主题的帖子: include double 
2013-12-02 12:45
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:1 
程序代码:
#include <stdio.h>
#include <math.h>

int main()
{
    int m = 5;
    int k = (int)sqrt(m);

    printf( "%d,%f\n", k, sqrt(m) );

    return 0;
}
2013-12-02 13:30
ldj34089850
Rank: 2
等 级:论坛游民
帖 子:22
专家分:12
注 册:2013-11-10
收藏
得分:1 
因为利用sqrt时   系统已经定义sqrt为double型,int到float是低精度到高精度的转换,所以不能正确的显示出来,第一个k能显示出来,是因为一开始已经定义k是整型。sqrt(m)是double 型,要用f才能显示。
正确的写法应该是printf("%d,%f",k,sqrt(m));   
2013-12-02 13:32
i80286
Rank: 6Rank: 6
等 级:侠之大者
威 望:5
帖 子:99
专家分:428
注 册:2013-9-30
收藏
得分:1 
sqrt函数不接受int型参数(可能是警告错误),其返回值也不会是int型(可能是警告错误)
2013-12-02 13:34
左手拉一只猫
Rank: 4
来 自:杭州
等 级:业余侠客
帖 子:70
专家分:250
注 册:2013-10-27
收藏
得分:1 
C++里面这种语句是通不过的,sqrt()的参数必须是浮点型的。。。。

我能帮你的只能到这里了。。。
2013-12-02 16:33
kevin_01
Rank: 2
等 级:论坛游民
帖 子:36
专家分:83
注 册:2013-11-23
收藏
得分:1 
这涉及到隐式转化了:
图片附件: 游客没有浏览图片的权限,请 登录注册

Hello  World !
2013-12-02 21:28
快速回复:关于double,int类型和浮点数,为什么?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.059071 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved