2014-03-04 25 views
0

目前,我們將小時數存儲在具有百分比字段的表格中,以便在一週內分配數據。跨月分配數據

例如。

| dayint | daytext | hours | percent | 
+--------+---------+-------+---------+ 
|  1 | mon  |  9 | 0.14 | 
|  2 | tue  | 15 | 0.23 | 
|  3 | wed  |  9 | 0.14 | 
|  4 | thu  |  9 | 0.14 | 
|  5 | fri  |  0 | 0.00 | 
|  6 | sat  | 23 | 0.35 | 

現在我們正在增加每月的分佈以及每週一次,所以要計算這個我:在一個月

  1. 獲取數週。

$周= $ days_in_month/7

  1. 迭代通過每天的百分比和由週數除以。

$百分率爲$日[ '百分']/$周

如果我的假設是正確的,這應該均勻分佈在本月發佈的數據。問題在於它一個月的額外費用一直在增加1%。

如果我輸入1000,我得到1013.如果我輸入200,我得到202.也許我只是在錯誤的數學上,任何幫助表示讚賞。

+0

我認爲在BODMAS中存在問題 –

+0

可能是舍入錯誤 – jing3142

回答

0

如果您的百分比列存儲的數據已被四捨五入並在您的月度計算中使用,而不是顯示在其他地方準確存儲的四捨五入結果,則會出現舍入誤差。

以下示例顯示了三週的結果,之後的表格使用實際數據和四捨五入的數據顯示結果。

|Hours|Actual   |Rounded| |Hours|Actual |Rounded| |Hours|Actual  |Rounded| 
| 9|0.13846153846154| 0.14| | 10|0.15625000| 0.16| | 8|0.135593220339| 0.14| 
| 15|0.23076923076923| 0.23| | 14|0.21875000| 0.22| | 13|0.220338983051| 0.22| 
| 9|0.13846153846154| 0.14| | 8|0.12500000| 0.13| | 11|0.186440677966| 0.19| 
| 9|0.13846153846154| 0.14| | 10|0.15625000| 0.16| | 7|0.118644067797| 0.12| 
| 0|0.00000000000000|  0| | 1|0.01562500| 0.02| | 2|0.033898305085| 0.03| 
| 23|0.35384615384615| 0.35| | 21|0.32812500| 0.33| | 18|0.305084745763| 0.31| 
| 65|1.00000000000000| 1.00| | 64|1.00000000| 1.02| | 59|1.000000000000| 1.01| 

在三個星期

$percent = $day['percent']/$weeks 

實際列迭代給出了結果

0.14343 
0.22329 
0.14997 
0.13779 
0.01651 
0.32902 
1.00000 

而圓潤列給出

0.146666667 
0.223333333 
0.153333333 
0.14 
0.016666667 
0.33 
1.01 

記住圓潤的結果總是向上或STA同樣永遠不會下降,所以錯誤總是比預期的稍微多一點。

+0

我非常專注於這些值,所以我沒有考慮數據庫值被舍入。這可能是答案。我會看看。 –

+0

全部消失,現在仍然關閉,實際上現在更是如此。獲取輸入1000的1014. –

+0

沒有看到代碼就不可能看到發生了什麼。你是否考慮了幾個星期沒有完全適應幾個月?你有沒有試過連續四個星期的月份而不是一個月? – jing3142

0

我決定改變我的做法,並去了解它是這樣的:

  1. 通過循環獲取該月的總時數:

    $total = $total + $day['hours']; 
    
  2. 使用存儲的時間,而不是百分比來計算新百分比使用:

    $percent = $v['hours']/$total; 
    

此方法返回正確的數據。