以下内容将确保任何大数字仅精确到百分位(related to this answer):
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
答案 0 :(得分:6)
你可以乘以20,然后除以20。
编辑:您将需要使用Math.round()而不是Math.floor(),否则您的测试用例3.09将变为3.05。
答案 1 :(得分:2)
您可以将* 100更改为* 20和/ 100/20。但是,当你可以自然地概括时,为什么要停在那里?
double floor(double in, double precision) {
return Math.floor(in/precision)*precision
}
//floor(1.07, 0.05) = 1.05