我有麻烦四舍五入GPA双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(这是我想要的,但没有整数和小数之间的周期).我如何解决这个问题?
9条答案
按热度按时间bjp0bcyl1#
要将双精度型舍入到小数点后2位,您可以使用:用途:
字符串
要四舍五入到小数点后n位,您可以用途:
型
这种方法不会特别快,如果性能成为问题,您可能需要另一种解决方案。
jslywgbw2#
如果这只是一个问题,写屏幕,然后四舍五入的数字使用
字符串
see
浮点数不能精确地表示,所以通过内部舍入值,然后在计算中使用它,会增加不精确性。
dpiehjr43#
当你试图在一个变量中存储n个十进制值的值时。你必须用10^n乘以该值并除以10^n。之后使用类型运算符在程序中进行操作。下面是例子:-
字符串
uoifb46i4#
你不能将双精度数四舍五入到小数点后两位。双精度数没有小数点。它们有二进制位,并且它们不能用小数点表示。
如果你想要小数位数,你必须使用十进制基数,例如当用printf(“%.2f”,...)格式化输出时。
yqlxgs2m5#
试试这个。但是你的
cout
语句在else条件下,所以它不会给予3.67924的期望输出。字符串
8tntrjer6#
例如:您希望将56.89999999999输出为一个带有2个小数点的字符串,即56.89。
首先,转换它们
值= 56.89 * 1000 = 5689
系数= 100
等
字符串
不确定这是否能帮助?
5ssjco0h7#
这可以通过fixed和setprecision()的组合来完成。
字符串
vfh0ocws8#
字符串
很好的处理所有的正浮点数。一个小的修改将使它也适用于-ves。
osh3o9ms9#
字符串