簡體   English   中英

使用round()獲取精確值 - PHP

[英]Using round() to get exact value - PHP

嘿伙計我正在研究我的一個涉及使用錢的項目。 我試圖不再使用圓形,因為它將四舍五入到最接近的十分之一,我需要精確的數字。 我使用它的一個原因是因為它給出了一個整數。

我使用我的數字系統的方式是100 = $1, 2000 = $20, etc..我當前正在使用圓函數,因為它會為我刪除小數點並給我一個整數,讓我們說: 223反過來= $2.23

這是我正在使用的:

$amount += round(($amount / 29) + 30);

這是數字:

假設我們收取100 and we add 125 which equal 225 (USD $2.25)的費用, 100 and we add 125 which equal 225 (USD $2.25) 現在我們添加稅收和處理: + 2.9% + $.30 在將2.25 by 2.9%乘以2.25 by 2.9%並增加.30 ,金額將為: 0.36525 - 這是應該加到的$2.25 which than would be 261 = $2.61

問題是由於四舍五入,當我查看我的條紋面板(I am using Stripe API for payments)我看到收費$2.63 所以我的問題是,如果沒有任何舍入和小數位,我將如何准確地完成它。

更新:

以上是更多解釋的上述示例:

假設我們收取100 and we add 125 which equal 225 (USD $2.25)的費用, 100 and we add 125 which equal 225 (USD $2.25) 現在我們添加稅收和處理: + 2.9% + $.30 在將2.25 by 2.9%乘以2.25 by 2.9%並增加.30 ,金額將為: 0.36525 - 這是應該加到的$2.25 which than would be 261 = $2.61

所以現在應該收取的金額的實際價值是$2.61但是當使用該輪時,它給我263 ,這也意味着$2.63 上面的例子是正確的簡單數學。

為了避免這樣的計算打嗝,只繞過最終結果。 保持所有其他計算盡可能准確:

$original = 100;
$original += 125;

$tax = $original * 2.9 / 100; //+2.9%
$tax += 30; //+$.30

$original += $tax; //Add tax.

echo $original; //Result is 261.525. Round as you please.

您可以指定精度和舍入方法以保持一致( PHP round() ),然后您可以處理實際值。 數學技巧如乘以10的倍數只會讓它在長期內更加混亂。

$amount += round(($amount / 29) + 30, 2, PHP_ROUND_HALF_UP);

這會解決你的問題嗎?

暫無
暫無

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

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