我無法將GPA加倍到小數點後兩位。 (需要GPA的當然要舍:3.67924)我目前使用的小區圍捕,但它目前將其作爲一個整數(368)C++舍入雙精度小數點後兩位數
這裏是我現在所擁有的
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(這是我想要的,但沒有整個數字和小數之間的時間段)。我怎樣才能解決這個問題?
將100乘以四捨五入之後再除以100.或者,如果您只需**打印兩位小數,請保持該值不變,然後使用['setprecision'](http://打印時,請使用en.cppreference.com/w/cpp/io/manip/setprecision)。 – 2014-09-19 02:12:23
標題提到四捨五入,但問題陳述提到四捨五入。舍入可以用gpa = floor((100. * gpa)+。5)/ 100來實現。 – rcgldr 2014-09-19 03:09:32
'會輸出368(這是我想要的,但沒有整數和小數之間的時間間隔)。我該如何解決這個問題?'假設'gpa'是一個'double',你可以這麼做'gpa/= 100'。 – 2014-09-19 03:30:23