C++ 为什么这些以不同顺序执行相同计算的程序会给我不同的输出?
为什么这两个程序的输出不同?我已经包括了代码,所以你可以很容易地查看和尝试它。谁能给我解释一下吗C++ 为什么这些以不同顺序执行相同计算的程序会给我不同的输出?,c++,C++,为什么这两个程序的输出不同?我已经包括了代码,所以你可以很容易地查看和尝试它。谁能给我解释一下吗 #include <iostream> #include <iomanip> using namespace std; int main() { float pi = 3.14159; int r; while (cin >> r) { cout << "VOLUME = " << fixed &
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
float pi = 3.14159;
int r;
while (cin >> r) {
cout << "VOLUME = " << fixed << setprecision(3)
<< pi*r*r*r*(4.0/3.0) << endl;
}
return 0;
}
#包括
#包括
使用名称空间std;
int main(){
浮点数pi=3.14159;
INTR;
而(cin>>r){
cout你截图中的代码不是你在这里发布的代码。我建议将来,如果你需要帮助解决你遇到的问题,你可以发布你遇到问题的代码,而不是完全不同的代码
在这种情况下,问题很简单-r*r*r
太大,无法放入一个int中。您可以将r
更改为typelong
,这个问题应该会消失。或者,您可以使用此处发布的两个代码块中的任何一个,因为它们都可以按预期工作。问题可能是浮点型决定。除非他没有设置变量,否则任何事情都可能发生。你能发布完整的程序吗?@spartygw。如果你愿意帮助他,花时间编辑问题,使问题保持正确的形状。我的经验是,当noobs的问题[暂停]时,他们会取得最好的学习效果。对于第一个问题,如果我尝试1523,它会给我14797487059.353,这是正确的一个。浮点值不够大,无法进行计算,数字溢出。如果使用双精度,它们都输出相同的数字。@ibrahiem我已投票重新打开您的问题,但仍然不够好。您应该将所有信息都放在问题中。“输出不同”很难被称为“信息”。我已将您的评论答案编辑到文本中,下次请您自己这样做-不要只在评论中回答。
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
float pi = 3.14159;
int r;
while (cin >> r) {
cout << "VOLUME = " << fixed << setprecision(3)
<< (4.0/3.0)*r*r*r*pi << endl;
}
return 0;
}