int mid1;//取整形部分,不理会小数部分
float mid = 3.966;//取整形部分,float和double会进行四舍五入
mid=-1.855;
像这种情况最好用printf输出
printf("%.4lf",a);
四舍五入(本来就是用于正数;负数根据要求转成正数再进行运算,再转回负数):保留整数 int a = b+0.5;
保留一位小数 int a=(b+0.05)*10;
double c=a/10;
保留二位小数 int a=(b+0.005)*100;
double c=a/100;
(上面的方法仅适用于正数。)
负数则需要在前面进行一次取反,=0-a;得到他的正数,再进行数值操作
floor( )向下 和 ceil( )向上取整
#include <iostream>
#include <cmath>
using namespace std;
int r(double a){
int b;
if(a > 0){
b = (a*2+1)/2;
}else{
b = (a*2-1)/2;
}
return b;
}
int main(){
double a = -0.69;
a = r(a);
cout<<"a = "<<a<<endl;
cout<<"round(a) = "<<round(a)<<endl;
return 0;
}
#include <iostream>
using namespace std;
double foo(double n)
{
bool sign = n < 0;
if (n < 0) n = 0 - n;
n = ((int)(n * 100.0)) / 100.0;
if (sign) n = 0 - n;
return n;
}
int main()
{
double d1 = -1.2365;
double d2 = -1.6543;
std::cout << foo(d1) << " " << foo(d2) << endl;
}