0

为什么这个打印1???它让我发疯。应该打印 1.01005016708

我正在使用bloodshed dev 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;
}
4

3 回答 3

3

1 / 5 是整数除法——操作数都是整数,因此你会得到 0。

使用 1.0 / 5,以确保至少一个操作数是双精度& 并且您的除法将作为浮点双精度执行。

两个整数操作数,会给你整数除法。

于 2013-05-09T02:41:40.183 回答
1
 double time = (1/5);

应该

 double time = (1.0/5); 

否则,time0.0因为整数除法而被截断。因此,p = exp(0.0)将为 1。

于 2013-05-09T02:42:05.260 回答
0

抱歉,这不是您问题的答案,但 Thomas 和 tacop 已经解决了这个问题。

您应该寻找一个新的 IDE 来使用,我自己切换到 code::blocks,我认为它很棒,但这里有一些原因:

  1. Dev-C++ 自 2005 年以来未更新,目前未维护。软件漏洞很大。在我写这篇文章的时候,有 340 个已知的错误永远不会被修复。

  2. 很难获得帮助,因为编程社区已经转向更新的软件。

  3. Dev-C++ 缺乏更现代的解决方案中存在的功能。不提供代码完成、智能感知和适当的调试工具(等等)。这些工具可以极大地提高有经验的程序员的工作流程和效率,并且可以帮助初学者的学习。

  4. 与更现代的解决方案相比,错误消息和解决它们所需的步骤记录得很少,而且由于大多数程序员已经从 Dev-C++ 转移,因此很难(如果不是不可能的话)找到能够帮助您的人。有些问题可能根本无法解决。Dev-C++ 中包含的编译器非常过时,而且有问题。过时的编译器可能会导致错误和低效的代码,并且可能会损害初学者的学习过程。

  5. 现代库不再支持提供的“devpack”系统。对于期望这个简单系统为他们处理的初学者来说,在 Dev-C++ 中使用外部库可能是一个令人困惑和困难的过程。有很多现代的、免费的替代品不会遇到同样的问题,任何初学者最终都使用 Dev-C++ 这样可怕且过时的工具简直是荒谬的。

另外,你可以摆脱那个可怜的system("PAUSE");

于 2013-05-09T02:51:44.480 回答