为什么这些函数会截断返回值?

时间:2015-06-25 23:21:06

标签: c++ function arithmetic-expressions truncated

请注意下面的作业。

编辑:

拿出无用的信息。

所以很明显这是一个家庭作业,除了我的功能里面的计算外,一切似乎都是正确的。

如何返回非截断值?

float hat(float weight, float height) {
    return (weight/height)*2.9;
}
float jacket(float weight, float height, int age) {
    double result = (height * weight) / 288;
    /*now for every 10 years past 30 add (1/8) to the result*/
    if((age - 30) > 0){
        int temp = (age - 30) / 10;
        result = result + (temp * .125);
        //cout<<"result is: "<<result<<endl;
    }
    return result;
}

float waist(float weight, int age) {
    double result = weight / 5.7;
    /*now for every 2 years past 28 we add (1/10) to the result*/
    if((age - 28) > 0){
        int temp = (age - 28) / 2;
        result = result + (temp * .1);
    }
return result;}

2 个答案:

答案 0 :(得分:1)

glVertex2f(0.15f, 0.51f);

你已经以iostream格式化输出的方式绊倒了。

在用于格式化浮点值(未请求cout << "hat size: " << setprecision(2) << hat(weight, height) << endl; fixed输出)的“默认”模式下,精度是要打印的位数, 位于小数点两侧。想想“重要数字”,而不是“小数位数”。

对于您要做的事情,我建议您使用“固定”模式或手动操作,然后不指定精度。

答案 1 :(得分:0)

设置fixed

  // Output data //
  cout << fixed;
  cout << "hat size: " << setprecision(2) << hat(weight, height) << endl;
  cout << "jacket size: " << setprecision(2) << jacket(weight, height, age) << endl;
  cout << "waist size: " << setprecision(2) << waist(weight, age) << endl;