我对作业有疑问:
&#34;然后在您收到用户的输入后,对最终百分比进行数学运算,并使用static_cast<float>
,(float)
或{将结果转换为浮点数{1}}&#34;
所以我计算了这个:
1.0*
然后输出是:
totalUserPoints = usersHomeworkScore + usersExamScore + usersReciationScore ;
scorePercentage = (totalUserPoints/totalPossiblePoints);
但是我被告知我仍然没有达到要求。我应该这样做是为了满足要求:
cout << endl << "Your total points for class is: " << totalUserPoints << endl ;
cout<< "Which is a precentage of: " << scorePercentage <<" %" <<endl;
还是我仍然不理解?任何帮助表示赞赏。
答案 0 :(得分:0)
scorePercentage = (totalUserPoints/totalPossiblePoints);
是错误的,因为在与100相乘后,百分比必须是结果。
相反,你可以这样做:
scorePercentage = (totalUserPoints/totalPossiblePoints)*100
请注意,这里不需要任何转换或乘法,因为这是一个双重除以int操作,编译器通过将int转换为double来处理它。
此外,在打印该值时不需要进行投射,而是在第一次进行计算时可以获得准确的结果。
所以,替换
cout << "Which is a precentage of: " <<static_cast <int>((scorePercentage) * 100 ) <<" %" <<endl;
带
cout << "Which is a precentage of: " << scorePercentage << " %" <<endl;
答案 1 :(得分:0)
嗯,这显然是功课。为什么要这样做呢?
首先,百分比是* 100。那么totalUserPoints应该仍然是int。练习想要教的东西是(float)((totalUserPoints * 100)/ totalPossiblePoints)vs.((float)totalUserPoints * 100.0f)/(float)totalPossiblePoints。如何在浮动与整数中进行划分不同?为什么?
答案 2 :(得分:0)
我认为你应该将scorePercentage和totalPossiblePoints声明为double,这样你就不会有任何问题。
但如果您不能发表该声明,则应进行以下投射:
scorePercentage = static_cast<float>( totalUserPoints/static_cast<double>(totalPossiblePoints) );
或者也有这种替代方案(但是冒着在totalUserPoints中进行投射时可能导致数据丢失的风险):
scorePercentage = static_cast<float>(totalUserPoints)/static_cast<float>(totalPossiblePoints);
如果您还想将舍入输出输出到零小数位,请使用setprecision:
cout << setprecision(0) << endl << "Your total points for class is: " << totalUserPoints << endl ;
cout << setprecision(0) << "Which is a precentage of: " << (scorePercentage*100) <<" %" <<endl;