我想创建一个c ++程序来计算3个正数的平均值
其中(x,y,z)> 0且(x,y,z)<= 10
我有这段代码:
#include <iostream>
#include <cstdio>
#include <math.h>
using namespace std;
int main()
{
int x,y,z;
cin >> x >> y >> z;
double x1,y1,z1,ma;
x1 = x;
y1 = y;
z1 = z;
if(x>0 && x<=10 && y>0 && y<=10 && z>0 && z<=10)
ma = (x1+y1+z1)/3;
else
return 0;
printf("%.2f" , ma);
return 0;
}
对于x = 9,y = 9且z = 5,平均值为23/3 = 7.666666666666667,当我格式化为2位小数时,结果将为7.67,但我想显示7.66而不是7.67。
拜托,有人可以帮助我吗?
谢谢!
答案 0 :(得分:4)
不使用其他功能,您可以这样做:
double x = (double)((int)(23 * 100 / 3)) / 100.0;
甚至更简单:
double x = (double)(int)(23 * 100 / 3) / 100.0;
int
cast会截断剩余的数字(因此没有舍入)。
在C ++ 11中,还有trunc()函数可以做到这一点。