C ++ sqrt函数返回截断的(错误的)输出

时间:2018-11-12 17:14:51

标签: c++ math.h

我对math.h的函数sqrt有疑问

我正在调试一些代码,我发现我的函数无法正常工作,因为2/3的平方根总是返回零。

我试图通过在单独的文件中写下一些平方根计算来解决问题,而该函数未返回正确的值。

我想念什么吗?

#include <math.h>
#include <iostream>

using namespace std;
int main(){
        cout << sqrt(2/3) << endl;
        cout << sqrt(16/2) << endl;
        cout << sqrt(9/2) << endl;
        return 0;

}

这是我收到的输出:

0
2.82843
2

正确的输出应为:

0.81650
2.82843
2.12132

谢谢。

1 个答案:

答案 0 :(得分:3)

1,2,4,8,9是整数常量,并且整数的算术结果将始终是整数。

因此,您应该使用双常量,因此您应该尝试:

cout << sqrt(2.0/3.0) << endl;
cout << sqrt(16.0/2.0) << endl;
cout << sqrt(9.0/2.0) << endl;