[英]C++ Rounding Numbers without ceiling or floor
我正在尝试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.5
并将其类型转换为int
。
添加0.5
的原因是为了确保四舍五入,而不是舍去小数部分。 因此, 6.6
将被截断为6
,但四舍五入为7
。
类型转换是更改类型的过程。 某些类型彼此兼容,但有所不同。 例如, int
, float
, double
, long
都表示数字。 因此,当您编写int + float
,编译器首先将int
自动转换为float
,然后执行操作。 这称为类型转换。 您可以明确地执行此操作,或者编译器可以多次执行。
因此,总结起来,添加0.5
将帮助您正确舍入,并且类型转换将更改类型。
您可以尝试以下代码-
#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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.