私は単純なクラスをC++で計算し、単純な算術演算を行い、コンパイラは自分のdouble変数をintに変換します。私のクラスでは、double
を返すmakePayment
メソッドがあり、正常に動作しています。問題は私がcharge
私のカードにしようとすると、何かのようにdouble
からint
へのcharge
私のカードの後にすべての操作または私がbalance
を印刷するとき、整数を返すので、クラスの変数balance
のように表示されます。C++コンパイラがdoubleからintに変換されます
class DebitCard {
public:
DebitCard();
bool makePayment(double amount);
const double& getBalance()
{ return balance; }
void dailyInterest()
{ balance *= interest; }
void chargeCard(double amount)
{ balance += amount; }
private:
string card_number;
short pin;
double balance;
double payment_fee; // percentage fee for paying with the card
double interest; // daily interest
//double charge_tax; // percentage taxing for charing the card
};
、ここでは、私がメイン機能で行うテストです
DebitCard d; // balance is set to 100
d.makePayment(91.50);
cout << std::setprecision(3) << d.getBalance() << endl; // 7.58
d.chargeCard(200);
cout << std::setprecision(3) << d.getBalance() << endl; // 208
d.makePayment(91.50);
cout << std::setprecision(3) << d.getBalance() << endl; // 115
私は本当に誰かが私を説明することができれば、それは非常になりますので、起こっていることである理由の周り私の頭をラップすることはできません感謝。
[std :: showpoint、std :: noshowpoint](http://en.cppreference.com/w/cpp/io/manip/showpoint) – crashmstr
http://en.cppreference.com/w/cpp/ io/ios_base/precision: "浮動小数点出力の精度(つまり***何桁の数字が生成されますか***)を管理します..." –
bool makePayment(double amount); ??実装? – eyllanesc