※ ChatGPTを利用し、要約された質問です(原文:初心者です。 C++ついて)
C++でおつり計算プログラムを作成する方法
このQ&Aのポイント
C++を使用しておつり計算プログラムを作成する方法について教えてください。
プログラム内でdoubleとintの変換が原因でおつりが1セント少なくなってしまう問題が発生しています。
正しく動作するようにするための解決策を教えていただきたいです。
ドルでおつりを計算するプログラムをC++で書きましたが、時々1セント少なくなって
しまいます。おつり計算の時は正しいのですが、結果(double) を intにアサインする時にそうなってしまいます。どうすれば正しく動くようになるのかわかりましたら、教えてください。よろしくお願いします。コンパイラーはマックのg++を使用しています。
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
//declare variables
double amountOwes = 0.0;
double amountPaid = 1.0;
double amountOfChange = 0.0;
int numberOfDollars = 0;
int cents = 0;
cout << fixed << setprecision(2);
for (amountOwes = 0.0; amountOwes < 1.00; amountOwes = amountOwes + 0.01) {
amountOfChange = amountPaid - amountOwes;
if (amountOfChange >=0 ) {
numberOfDollars = (int) amountOfChange;
cents = (int) (100.0 * (amountOfChange - (double) numberOfDollars));
cout << "Paid $"<<amountPaid<< " Owes $"<<amountOwes<< " ";
cout << "change "<<100 * (amountOfChange - numberOfDollars)<< " cents ";
cout << "cents= " << cents << " cents\n";
}
}
// system ("pause");
return 0;
} //end of main function
お礼
皆さん、 回答をありがとうございました。もともと最初から間違っていたのですね。汎整数型を使ってみます。