牛客CPP2 实现四舍五入
这里看到了两种做法,第一种实现是:
由于C++中double类型是自动四舍五入的,所以直接格式化输出0位小数:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#include <iostream>
using namespace std;
int main() {
double a;
cin >> a;
printf("%.0f", a);
return 0;
}
|
在题解中看到更加优雅的实现方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#include <iostream>
using namespace std;
int main() {
double d;
cin >> d;
if (d > 0) {
cout<<(int)(d+0.5);
}
else {
cout<<(int)(d-0.5);
}
return 0;
}
|
这个是游戏编程里常用的方法,正数浮点数+0.5(负数浮点数-0.5)后强制类型转换相当于四舍五入
这个原理是:由于强制转型的时候程序会直接截断小数(向零取整),所以对任意一个正数加0.5,如果它的小数部分>0.5 则进一,然后直接截断,对于负数同理,减去0.5,然后向零取整.
这样就实现了四舍五入的功能.
endl 和 /n 的区别:
endl: endl 会输出 ‘\n’ ,然后立即刷新缓冲区并输出到屏幕上,由于要刷新缓冲区, endl 会比 \n 慢一点
牛客CPP4 获取两数中的较大值
1
2
3
4
5
6
7
8
9
10
11
12
|
#include <iostream>
using namespace std;
int main() {
int a;
int b;
scanf("%d%d", &a,&b);
printf("%d", a>b?a:b);
return 0;
}
|