sqrt函数没有评估正确的值

时间:2014-04-16 14:43:08

标签: c++

我是C++中的新手,我试图评估平方根。我写了以下内容:

#include <math.h>
#include <stdio.h>

int _tmain(int argc, _TCHAR* argv[])
{
    double a;
    a=sqrt(2.0);
    printf("Square root from 2 is %d\n",a);
    return 0;
}

但输出为Square root from 2 is 1719614413。我真的不明白这一点。请解释一下。

2 个答案:

答案 0 :(得分:4)

你正在使用C(主要编译为C ++),而不是C ++,你犯了一个错误。您可以学习C语言或使用C ++语言,这样可以更容易犯这些错误:

#include <cmath>
#include <iostream>

int main()
{
    double a = std::sqrt(2.0);

    std::cout << "Square root from 2 is " << a << std::endl;

    return 0;
}

补充说明:

printf("Square root from 2 is %d\n",a);

这会打印一个字符串,并希望传递一个整数(%d)。你通过了一个双人,它是垃圾。您可以使用(%lf)表示双打。

答案 1 :(得分:1)

如果您仍想坚持我们的示例,请考虑使用%f而不是%d: