具有可变位数的数学圆函数

时间:2015-05-21 14:35:50

标签: c++

如何使用与excel round function相同的数学轮函数

float round( float arg );

round(number, num_digits

  • 如果num_digits大于0,则将数字四舍五入到指定的小数位数。

  • 如果num_digits为0,则将数字四舍五入为最接近的整数。

  • 如果num_digits小于0,则该数字将四舍五入到小数点的左侧。

1 个答案:

答案 0 :(得分:3)

简单算术,

#include <stdio.h>
#include <cmath>

float my_round( float arg, int digits )
{
    float retValue = arg * pow(10.0f,(float)digits);
    retValue = round(retValue);
    return retValue * std::pow(10.0f,(float)-digits);
}


int main()
{
    float value = 12.3456789f;
    for(int i=-1;i<6;i++)
    {
            printf("%f\n", my_round(value, i));
    }
}

应该做的伎俩,(用g ++编译)

输出是:

10.000000
12.000000
12.300000
12.349999
12.346001
12.345699
12.345679