如何在变量内设置浮点精度

时间:2011-03-17 04:20:50

标签: c++ c floating-point

我目前正在开发一个程序,我需要在浮点后计算舍入值到2位数。 说,我已宣布

float a;

如果a = 3.555则会存储a = 3.56,向上舍入。

对于a = 3.423,a的值为a = 3.423,无变化。

我可以这样做来打印输出,但是在将它存储到变量中并将该变量用于其他计算时我需要做什么?

4 个答案:

答案 0 :(得分:5)

如果小数点后需要两位数,请不要使用浮点数。请改用固定点数。例如,只使用比您想要表示的十进制数大100倍的整数。试图将基数为2的浮点数拟合到这样的舍入规则中,这对你来说不会产生令人满意的结果。

答案 1 :(得分:4)

    double d = 5000.23423;
    d = ceil(d*100)/100;
    cout << d << endl; // prints : 5000.24
    double e = 5000.23423;
    e = floor(e*100)/100; 
    cout << e << endl; // prints : 5000.23

答案 2 :(得分:1)

你可以这样做:

a = roundf(a*100)/100;

答案 3 :(得分:0)

怎么样

#include <math.h>

int main ()
{
  double a, f, i;

  a = 3.436;
  f= modf(a, &i);
  a = i + roundf(f* 100.0) / 100.0;
  return 0;
}

在双打时操作,但避免缩放整数。

更新:添加了缺失的部门。