实现excel的ROUND功能

时间:2009-05-25 14:26:51

标签: excel language-agnostic fortran

您将如何实现ROUND功能:

ROUND(value, number of digits)
pi=3.14159265358979323
so, for example, ROUND(pi, 3) = 3.142

如果您有这些功能可供您使用:
AINT - 将值截断为整数
ANINT - 计算最接近的整数
NINT - 返回与参数

最接近的整数

或从不关注上述功能,如何完成浮动ROUND?

2 个答案:

答案 0 :(得分:4)

如果您不需要担心溢出,请按以下步骤操作:

ROUND(value, nod) = NINT(value * POWER(10, nod)) / POWER(10, nod)

否则你需要分别处理整数部分和浮动部分。

答案 1 :(得分:1)

我会假设,请原谅我的伪代码

function Round(value, num){
    numsToSave = POWER(10, num);
    value *= numsToSave ; //Get the numbers we don't want rounded on the left side of the floating point
    value = AINT( ANINT(value) );
    value /= numsToSave;

    return value;
}

function Round(value, num){
    numsToSave = POWER(10, num);
    value *= numsToSave ; //Get the numbers we don't want rounded on the left side of the floating point
    value = NINT(value);
    value /= numsToSave;

    return value;
}