2010-07-14 107 views
1

我在讀,你必須小心使用PHP中的浮點比較和計算。我不是PHP的專家,所以我想我會問社區什麼是在PHP中做精確小數計算的最佳方法。PHP十進制計算

我正在開發一個計算所有本週輸入時間的計時卡應用程序。超過40小時的任何事情都被視爲加班。然後,我想根據進入總時間的百分比在每個時間條目上分發加班費。

實施例:

星期一=10小時
總時間=50小時
總加班=10小時

的總時間(0.2)=百分比星期一(10小時)/總時間(50小時)
加班加點地分配到週一(2小時)=總加班費(10小時)*總時間的百分比(0.2)

現在作出週一加班2小時的新條目和減去從原來的2小時條目。

新條目:
週一(8小時)=週一 - 加班分配到週一(2小時)
週一加班=2小時

事情使用整數你原來的時候似乎並不壞條目,但是當我開始使用浮動並且每天有多個時間條目時會發生什麼?每次輸入時都會有一部分時間分配給它,但我需要確保不要再分配更多的加班時間,然後才能使用,同時我還需要確保每天和整個計時卡的總時間與原來的一樣進入。我讀過比較浮動php是不安全的。我該如何計算。 (##)另外,最後輸入的數字必須四捨五入至小數點後2分

回答

1

你可以使用定點數學。例如,如果您的值需要精確到1分,那麼使用一分作爲您的單位,然後您可以使用值1234來表示12.34,等等。

您仍然會發現某些操作(包括除法)可能會返回浮點值。無論如何,你只需要決定如何處理餘下的事情。例如,如果你有1.04,你除以5,結果應該是0.21(四捨五入或最接近)或0.20(舍入)等等,然後用round,ceil或floor轉換回整數。

+0

在OP的情況下,這相當於以整數分鐘或甚至秒計算,以浮點小時計算 – 2010-07-14 14:29:23