次のコードの予想結果は505.5である必要がありますが、代わりに3.97541e + 70が返されます。なぜこれが当てはまり、どのように問題を解決できるのでしょうか?なぜこのコードは値505.5のbpEffect変数を返しませんか?
#include <iostream>
#include <string>
using namespace std;
class Position {
public:
Position(int s, double p, string n) {
shares = s;
price = p;
name = n;
}
double getBpEffect() {
return bpEffect;
}
private:
string name;
int shares;
double price;
double bpEffect = (shares*price)/2;
};
int main() {
Position xyz = Position(100, 10.11, "xyz");
double buyingPower = xyz.getBpEffect();
cout << buyingPower;
system("pause");
return 0;
}
'(株*価格)/ 2'' shares'と 'が初期化されますprice'前に、早期にあまりにも起こります。あなたは無作為なゴミに対して算術演算をしているので、もちろんガーベジを得ることができます。 'shares'と' price'に値を割り当てた後、 'bpEffect'を初期化します。 –
イゴールは正しいです。 '(shares * price)/ 2'をあなたのコンストラクタのようなメソッドに入れて、あなたのコードの初期文としてではなくてはなりません。 – Nonanon
がIgor Tandetnikによると、あなたはゴミを管理しています。間違いのゴミを出すゴミ。解決策は明白である:「位置(int s、double p、string n):名前{n}、株式{s}、価格{p}、bpEffect {(shares * price)/ 2} {} ' – max66