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 を使用して、少なくとも 1 つのオペランドがdouble & であり、除算が浮動小数点 double として実行されるようにします。

2 つの整数オペランドにより、整数除算が得られます。

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

する必要があります

 double time = (1.0/5); 

それ以外の場合は、整数除算の切り捨てが原因でtime取得されます。0.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 に答える