【发布时间】:2019-04-15 11:04:31
【问题描述】:
我对 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
提前谢谢你。
【问题讨论】:
-
某处有一个 dup...
-
@YSC 如果你能找到它,那将非常有帮助。除了有人说 sqrt(3) 在 gdb 中被评估为零之外找不到任何东西
-
@YSC 更像
+Infdupes,以保持与 IEEE 754 的精神 -
stackoverflow.com/questions/9764677/… 回答你的问题了吗?
-
@MicheleFattoruso 没有什么好羞愧的。算术的复杂性是 C/C++ 中最违反直觉的部分之一。