2009-04-28 19 views
3

下面將確保任何大量只精確到百位(related to this answer):如何讓數字具有.05的精度?

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

    return sc; 
} 

什麼是圓我號碼.05精度的最佳方法是什麼?爲了獲得這個結果,是否有一些聰明的工作要做?例如,我想:

3.4566 = 3.45

3.04232 = 3.05

3.09 = 3.1

3.32 = 3.3

回答

6

您可以通過20乘,圓形,然後通過20

編輯劃分:您將要使用Math.round(),而不是Math.floor(),否則你的測試用例3.09會變成3.05。

2

你可以只改變* 100 * 20/100/20。但是,爲什麼在那裏停下來,什麼時候可以自然推廣?

double floor(double in, double precision) { 
    return Math.floor(in/precision)*precision 
} 
//floor(1.07, 0.05) = 1.05 
+0

這應該是Math.round(),而不是Math.floor()。 – Svante 2009-04-28 21:02:01

相關問題