获取内存地址,而不是双精度值 我只是在C++上练习,想从给定的半径得到圆的面积,但是结果给了我一个内存地址而不是值< /p> #include <iostream> #include<math.h> using namespace std; int main() { double a, n, r; n = 3.14159; cin >> r; a = pow(r,r) * n; cout << "A=" << a<<endl; }

获取内存地址,而不是双精度值 我只是在C++上练习,想从给定的半径得到圆的面积,但是结果给了我一个内存地址而不是值< /p> #include <iostream> #include<math.h> using namespace std; int main() { double a, n, r; n = 3.14159; cin >> r; a = pow(r,r) * n; cout << "A=" << a<<endl; },c++,C++,但是结果给了我一个内存地址而不是值 #include <iostream> #include<math.h> using namespace std; int main() { double a, n, r; n = 3.14159; cin >> r; a = pow(r,r) * n; cout << "A=" << a<<endl; } 当输入为100.

但是结果给了我一个内存地址而不是值

#include <iostream>
#include<math.h>
using namespace std;

int main() {
    double a, n, r;
    n = 3.14159;
    cin >> r;
    a = pow(r,r) * n;
    cout << "A=" << a<<endl;

}
当输入为100.64时,我得到了输出

A=1.13759e+202
A=1.13759e+202
你的假设是错误的。这不是一个“内存地址”。这是π×rʳ的正确结果

但是,对于圆的面积,您的计算不正确。正确的公式是
π×r²

额外提示:
r*r
通常优于调用
std::pow


额外提示2:C++20在
标题中有常量
std::numbers::pi
。它提供了π的可表示近似值。

是什么让你认为这个数字是一个“内存地址”?它不是内存地址
1.13759e+202
约为3.14159*(r^r)的值。如果你想计算一个不同的公式,你需要调整你的代码——我假设你想要一个圆的面积,在这种情况下你要么想要
r*r
或者
pow(r,2)
@Mahmoudeldieb:这就是你想要的数字computed@Mahmoudeldieb这是一个数字
1.13759e+202
是一种完全被接受的科学记数格式,它的编写远没有1137590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000那么烦人(同样,这也是对代码中表达的奇怪公式进行评估的结果)如果一个变量包含
pi
的值,为什么不称它为
pi
?哦,我得到了它,非常感谢;但是如何获得后面的4个数字呢decimal@Mahmoudeldieb我建议阅读iostreams的文档。我使用了这个cout.precision(4);但它给了我A=3.182e+04@Mahmoudeldieb精度是指所有位数,而不仅仅是小数点后的位数。