4

私は現在 C++ コースを受講しており、最終課題を完了しました。ただし、私を悩ませていることが1つあります。

特定の出力でテストするための正しい出力がありますが、そうであるbasepay必要が133.20あり、 として表示されてい133.2ます。これをオフのままにするのではなく、余分な 0 を表示させる方法はありますか?

それが可能かどうか、そしてそれを行う方法を知っている人はいますか?前もって感謝します

私のコードは以下の通りです:

cout<< "Base Pay .................. = " << basepay << endl;
cout<< "Hours in Overtime ......... = " << overtime_hours << endl;
cout<< "Overtime Pay Amount........ = " << overtime_extra << endl;
cout<< "Total Pay ................. = " << iIndividualSalary << endl;
cout<< endl;

cout<< "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" <<endl;
cout<< "%%%% EMPLOYEE SUMMARY DATA%%%%%%%%%%%%%%%%%%%%%%%" <<endl;
cout<< "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" <<endl;
cout<< "%%%% Total Employee Salaries ..... = " << iTotal_salaries <<endl;
cout<< "%%%% Total Employee Hours ........ = " << iTotal_hours <<endl;
cout<< "%%%% Total Overtime Hours......... = " << iTotal_OvertimeHours <<endl;
cout<< "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" << endl;
cout<< "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" << endl;
4

6 に答える 6

11

C ++の方法でそれを実行したい場合で、C ++ 11フラグを使用してコンパイルできる場合は、標準ライブラリを使用できます。

// Note: the value in cents!
const int basepay = 10000;

// Create a stream and imbue it with the local configuration.
std::stringstream ss;
ss.imbue(std::locale(""));

// The stream contains $100.00 (assuming a en_US locale config)
ss << std::showbase << std::put_money(basepay);

ここの例。

このアプローチにはどのような利点がありますか?

  • ローカル構成を使用するため、小数点記号、千単位の区切り文字、通貨記号、および小数点記号(必要な場合)の場合でも、出力はどのマシンでも一貫性があります。
  • すべてのフォーマット作業はすでにstdライブラリによって行われており、作業が少なくて済みます。
于 2013-03-11T11:07:51.910 に答える
5

はい、これはストリームマニピュレータを使用して行うことができます。たとえば、出力を固定浮動小数点表記に設定し、精度(この場合は2)を定義し、塗りつぶし文字を「0」に定義します。

#include <iostream>
#include <iomanip>

int main()
{
    double px = 133.20;
    std::cout << "Price: "
              << std::fixed << std::setprecision(2) << std::setfill('0')
              << px << std::endl;
}

Cスタイルのフォーマットを好む場合は、これを使用printf()して同じことを実現する例を次に示します。

#include <cstdio>

int main()
{
    double px = 133.20;
    std::printf("Price: %.02f\n", px);
}

それが役に立てば幸い。幸運を!

于 2013-03-10T21:20:02.040 に答える
5

cout.precisionを使用して精度を設定し、fixedを使用して固定小数点モードを切り替えます。

cout.precision(2);
cout<< "Base Pay .................. = " << fixed << basepay << endl;
于 2013-03-10T21:18:05.580 に答える
1

coutプロパティを変更できます。

cout.setf(ios::fixed);
cout.precision(2);`

cout << 133.2;印刷されます133.20

于 2013-03-10T21:19:41.867 に答える
1

これをチェックしてください:

int main()
{
    double a = 133.2;

    cout << fixed << setprecision(2) << a << endl;
}

出力

133.20

于 2013-03-10T21:19:59.327 に答える
1

precisionfixedを確認する必要があります。

#include <iostream>

int main()
{
    double f = 133.20;

    // default
    std::cout << f << std::endl;

    // precision and fixed-point specified
    std::cout.precision(2);
    std::cout << std::fixed << f << std::endl;

    return 0;
}
于 2013-03-10T21:23:56.440 に答える