0

您将如何实现 ROUND 函数:

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

如果您可以使用以下函数:
AINT - 将值截断为整数
ANINT - 计算最接近
的整数 NINT - 返回参数的最接近整数

或者不介意上述功能,浮动 ROUND 是如何完成的?

4

2 回答 2

4

如果您不需要担心溢出,方法如下:

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

否则,您需要分别处理整数部分和浮点部分。

于 2009-05-25T14:33:27.837 回答
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;
}
于 2009-05-25T14:30:54.503 回答