为什么这是打印1?快把我逼疯了。应打印1.01005016708
我正在使用血腥的开发者c++来编译
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
int main()
{
double rate = .05;
double time = (1/5);
double p = exp(rate*time);
cout<<p<<endl;
system("PAUSE");
return 0;
}发布于 2013-05-09 10:42:05
double time = (1/5);应该是
double time = (1.0/5); 否则,由于整数除法截断,time将得到0.0。因此,p = exp(0.0)将为1。
发布于 2013-05-09 10:41:40
1/5是整数除法--操作数都是整数,因此您将得到0。
使用1.0 / 5,以确保至少有一个操作数为双精度浮点数&并且您的除法将以浮点双精度(-)形式执行。
两个整数操作数,将给你整数除法。
发布于 2013-05-09 10:51:44
很抱歉,这不是您问题的答案,但Thomas和tacop已经介绍了。
你应该寻找一个新的IDE来使用,我自己也切换到了code::blocks,我认为它很棒,但这里有一些原因:
另外,你可以摆脱那个可恶的system("PAUSE");
https://stackoverflow.com/questions/16453468
复制相似问题