19

GPA double を小数点以下 2 桁に四捨五入するのに問題があります。(四捨五入が必要な GPA の例: 3.67924) 現在、切り上げに ceil を使用していますが、現在は整数 (368) として出力されます。

ここに私が今持っているものがあります

if (cin >> gpa) {
    if (gpa >= 0 && gpa <= 5) {
           // valid number

           gpa = ceil(gpa * 100);

           break;
    } else {
           cout << "Please enter a valid GPA (0.00 - 5.00)" << endl;
           cout << "GPA: ";

    }
}

上記のコードを 3.67924 で使用すると、368 が出力されます (これは私が望むものですが、整数と小数の間にピリオドがないだけです)。どうすればこれを修正できますか?

4

7 に答える 7

1

double を小数点以下 2 桁に四捨五入することはできません。double には小数点以下の桁数がありません。それらには 2 進数の桁があり、小数点以下の桁数とは通約できません。

小数点以下の桁数が必要な場合は、小数点以下の基数を使用する必要があります。たとえば、printf("%.2f", ...) を使用して出力をフォーマットする場合などです。

于 2014-09-19T03:20:01.063 に答える