2011-12-02 60 views
1

在JavaScript中, 鑑於分數(x)的數量是這樣的:求和和舍入分數乘以數目相等的數字?

0.3 
0.3 
0.2 
0.1 
0.1 

(那筆1)

我怎樣才能確保當我通過一個數(n)乘以這些,說1000,並將結果舍入爲整數,這些整數的和將等於(n)?

回答

3

使用Largest Remainder Method

第1步:乘以n號碼(在這種情況下,我們使用的n不立即制定出這麼好,以證明LRM仍然有效;我選擇737),並將整體和小數部分分開。

0.3 * 737 = 221 + 0.1 
0.3 * 737 = 221 + 0.1 
0.2 * 737 = 147 + 0.4 
0.1 * 737 = 73 + 0.7 
0.1 * 737 = 73 + 0.7 

步驟2:總結整數部分

221 + 221 + 147 + 73 + 73 = 735 

步驟3:添加:排序從最高到最低

High to low: 0.7, 0.7, 0.4, 0.1, 0.1 

步驟4的餘1以與關聯的整個數字組件直到總和等於n

在我們的案例中,我們距目標總數爲2(737),而0.7是最大的餘數,發生了兩次。 0.70.1相關聯,所以請將1加到0.1的整數。

你的最終名單是:

221 
221 
147 
74 
74 
+1

偉大的答案,謝謝1)鏈接到實際的方法,這樣我記得任期及給予解決方案逐步2)。 – dani

+0

很高興幫助:) –

0

如果你乘,圓,和,你不能保證它。你爲什麼不先總結,然後乘以,然後呢?