私はしばらく探しましたが、ここで答えを見つけることができませんでしたが、それは一種の奇妙な質問のようです. C++ で fstream ライブラリを使用しています。私がやろうとしているのは、入力ファイルからデータを取得し、それに変数を割り当て、これを画面と出力ファイルの両方に出力することです。これはすべて、自動車ローンの毎月の支払いを計算する私が取り組んでいるプロジェクトのためのものです。変数がそのままの名前になっているのはそのためです。
私のデータファイルは次のようになります。105670.00 12345.00 0.057 4
そして本質的に何が起こっているかというと、最初の2つの数字の小数点以下のすべてを失っています(小数点として何を入れたかに関係なく)が、3番目の数字には起こりません。さらに、最初の 2 つの数値の精度 (2) を設定しようとすると、コードの後に表示される奇妙な論理エラーが発生します。
私のコードは次のようになります。#include<fstream>
#include<iomanip>
#include<iostream>
using namespace std;
int main ()
{
ifstream din; // These are my input and output files
ofstream dout;
float purchasePrice; // The first number of the input file.
float downPayment; // Second number.
float annualInterest; // Third number.
float numYears; // Last number.
// declaring the input/output files code here
din >> purchasePrice >> downPayment >> annualInterest >> numYears;
cout << purchasePrice << endl;
cout << downPayment << endl;
cout << annualInterest << endl;
cout << setprecision(2) << purchasePrice << endl;
cout << setprecision(2) << downPayment << endl;
cout << setprecison(2) << annualInterest << endl;
}
ここに私の出力があります:
105670 12345 0.057 1.1e+005 1.2e+004 0.057
出力を次のようにします。105670.00 12345.00 0.057 105670.00 12345.00 0.05
さらに、計算を実行すると、数字は小数点以下のすべてが残っているかのように動作します。私の質問は、なぜフロートの一部だけが切り捨てられるのか、この場合に setprecision() が期待どおりに機能しないのはなぜですか?
どんな回答でも大歓迎です。長い説明で申し訳ありません。