#include<iostream> using namespace std; int main() { float a; cin >> a; // 方法1:cout << (int) (a + 0.5); //厉害 //cout << ((int) (a + 0.5) > (int) a) ? (int)a + 1 : (int)a; /* 方法2:注意if的条件是大于,不要写成大于等于 if((int)(a+0.5) > (int) a) { cout << (int)(a + 1); } else { cout << (int)a; } */ /*错误的三目运算符: cout << ((int)(a + 0.5) > (int) a) ? (int)a + 1 : (int)a; */ //正确的三目运算符: int out = 0; (int)(a + 0.5) > (int)a ? out = (int)(a + 1) : out = (int)a; cout << out; }
float 到 int的强转是向下取整,直接舍弃小数部分。
所以把原来的数+0.5看取整后是否大于(严格大于)原来的数取整。
很妙。
#include<iostream>using namespace std;
int main(){ float a; cin >> a; // 方法1:cout << (int) (a + 0.5); //厉害 //cout << ((int) (a + 0.5) > (int) a) ? (int)a + 1 : (int)a; /* 方法2:注意if的条件是大于,不要写成大于等于 if((int)(a+0.5) > (int) a) { cout << (int)(a + 1); } else { cout << (int)a; } */ /*错误的三目运算符: cout << ((int)(a + 0.5) > (int) a) ? (int)a + 1 : (int)a; */ //正确的三目运算符: int out = 0; (int)(a + 0.5) > (int)a ? out = (int)(a + 1) : out = (int)a; cout << out; }
原文:https://www.cnblogs.com/zlh-1024powr/p/14638983.html