我正在尝试DS Malik的 C ++编程中的以下问题:从问题分析到程序设计
第2章,问题7
编写一个程序,提示用户输入一个十进制数字和 输出四舍五入到最接近的整数。
我的计划到目前为止
#include <iostream>
using namespace std:cout;
using namespace std:cin;
int main()
{
double decimalNum;
cout << "Please enter a decimal number: ";
cin >> decimalNum;
return 0;
}
是否可以在不使用地板或天花板的情况下将数字舍入为整数?请注意,我刚刚开始使用C ++编程,所以请不要过于复杂。
答案 0 :(得分:2)
正如评论中所指出的,添加0.5
并将其强制转换为int
。
添加0.5
背后的原因是为了确保数字被舍入而不是被截断的小数部分。因此,6.6
将被截断为6
,但会四舍五入为7
。
类型转换是更改类型的过程。某些类型彼此兼容,但不同。例如,int
,float
,double
,long
都代表数字。因此,当您编写int + float
时,编译器会首先自动将int
转换为float
,然后执行操作。这称为类型转换。你可以明确地做,或者编译器多次这样做。
因此,要将其包装起来,添加0.5
将帮助您正确地完成,并且类型转换将改变类型。
答案 1 :(得分:2)
您可以尝试以下代码 -
#include <iostream>
using namespace std;
int main()
{
double decimalNum;
cout << "Please enter a decimal number: ";
cin >> decimalNum;
int roundNum = decimalNum + 0.5;
cout << "The nearest rounded number : " << roundNum << endl;
return 0;
}
答案 2 :(得分:0)
添加0.5然后调用modf
可能是您最好的选择 - 整数部分返回为double
,因此您仍然可以获得超出64位整数类型范围之外的数字的正确结果。 cmath header还提供了许多其他选项。