3

以下将确保任何大数字仅精确到百分之一(与此答案相关):

public function round( sc:Number ):Number
{
    sc = sc * 100;
    sc = Math.floor( sc );
    sc = sc / 100;

    return sc;
}

将我的数字四舍五入到 0.05 精度的最佳方法是什么?有什么聪明的方法可以通过位移来获得这个结果吗?例如,我想:

3.4566 = 3.45

3.04232 = 3.05

3.09 = 3.1

3.32 = 3.3

4

2 回答 2

6

你可以乘以 20,四舍五入,然后除以 20。

编辑:您将要使用 Math.round() 而不是 Math.floor(),否则您的测试用例 3.09 将变成 3.05。

于 2009-04-28T20:07:39.970 回答
2

您可以将 *100 更改为 *20 和 /100 /20。但是,当您可以自然地概括时,为什么要停在那里呢?

double floor(double in, double precision) {
    return Math.floor(in/precision)*precision
}
//floor(1.07, 0.05) = 1.05
于 2009-04-28T20:06:21.953 回答