[英]PHP float number with decimal point rounding
我正在計算幾個數字(sales_total、service_charge)以獲得 7% 的消費稅。 我得到的是帶小數點的數字。
示例 1:
$sales_total = 207.50;
$service_charge = 20.75;
$gst = ($sales + $sc) * .07;
返回給我 GST = 15.9775
。
示例 2:
$sales_total = 28;
$service_charge = 2.8;
$gst = ($sales + $sc) * .07;
2.156
我 GST = 2.156
我需要將數據與報告匹配,其中
我正在嘗試 php round
、 number_format
函數,但沒有讓我的兩個結果都正確。 round
給出示例 1 結果正確, number_format
給出示例 2 正確。
我做錯了什么,或者我需要使用哪個功能?
你有沒有嘗試過:
round($gst, 2);
這會將您的變量四舍五入到 2 個小數宮內。
你可以試試嗎?
由於您希望在兩種價值觀中都有不同的行為,因此我認為該回合無法在兩種情況下為您提供幫助。 實際上第二個例子你甚至不想要一輪。 你只想刪除第三個十進制數,所以......
在這種情況下,我將使用第一個示例,如我所說的帶有 2 個小數房屋的回合,在第二個示例中,我將刪除第三個房屋號碼或將數據庫中的限制>表格浮點數設為 2 個小數房屋。
我相信您可能需要使用遠離零的精確小數位四舍五入,因此取決於您可以使用:
$gst = sprintf("%.2f", round($gst, 3 - strlen(round($gst)), PHP_ROUND_HALF_ODD));
結果:
16.00
2.16
這顯示了 3 個小數位的精度,距零減去舍入值的長度。 您可能需要使用舍入模式和精度來獲得您想要的效果。 來自2.156
的2.15
的結果看起來不正確——不清楚你是如何得到這個值的。
PHP_ROUND_HALF_UP • 將 val 向上舍入到遠離零的精確小數位,當它是一半時。 將 1.5 變成 2,將 -1.5 變成 -2。
PHP_ROUND_HALF_DOWN • 將 val 向下舍入到接近零的精確小數位,當它達到一半時。 將 1.5 變為 1,將 -1.5 變為 -1。
PHP_ROUND_HALF_EVEN • 將val舍入到下一個偶數值的精確小數位。
PHP_ROUND_HALF_ODD • 將val舍入到下一個奇數值的精確小數位。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.