簡體   English   中英

帶小數點四舍五入的 PHP 浮點數

[英]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

我需要將數據與報告匹配,其中

  • 示例 1 GST = 16.00 (我的 15.9775)
  • 示例 2 GST = 2.15 (我的 2.156)

我正在嘗試 php roundnumber_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.1562.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舍入到下一個奇數值的精確小數位。

參考: http : //php.net/manual/en/function.round.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM