注册 登录
编程论坛 C++教室

关于double,int类型和浮点数,为什么?

境善 发布于 2013-12-02 12:45, 528 次点击
只有本站会员才能查看附件,请 登录

第一行应该输出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));
}
5 回复
#2
rjsp2013-12-02 13:30
程序代码:
#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;
}
#3
ldj340898502013-12-02 13:32
因为利用sqrt时   系统已经定义sqrt为double型,int到float是低精度到高精度的转换,所以不能正确的显示出来,第一个k能显示出来,是因为一开始已经定义k是整型。sqrt(m)是double 型,要用f才能显示。
正确的写法应该是printf("%d,%f",k,sqrt(m));   
#4
i802862013-12-02 13:34
sqrt函数不接受int型参数(可能是警告错误),其返回值也不会是int型(可能是警告错误)
#5
左手拉一只猫2013-12-02 16:33
C++里面这种语句是通不过的,sqrt()的参数必须是浮点型的。。。。
#6
kevin_012013-12-02 21:28
这涉及到隐式转化了:
只有本站会员才能查看附件,请 登录
1