c ++浮点输出

时间:2017-09-13 02:30:34

标签: c++

我对作业有疑问:

&#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;

还是我仍然不理解?任何帮助表示赞赏。

3 个答案:

答案 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;