嘿,我正在研究一个涉及使用金钱的项目。我试图不再使用圆形,因为它将四舍五入到最接近的十分之一,我需要精确的数字。我使用它的一个原因是因为它给出了一个整数。
我正在使用我的数字系统的方式是100 = $1, 2000 = $20, etc..
我当前正在使用圆函数,因为它会为我删除小数点并给我一个整数,让我们说:{{1} }反过来会= 223
。
以下是我正在使用的内容:
$2.23
以下是数字:
假设我们收取$amount += round(($amount / 29) + 30);
的费用。现在我们添加税收和处理:100 and we add 125 which equal 225 (USD $2.25)
。将+ 2.9% + $.30
与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)
。将+ 2.9% + $.30
与2.25 by 2.9%
相乘后,金额将为:.30
- 这是应添加的金额,而不是0.36525
现在,应该收取的金额的实际值是$2.25 which than would be 261 = $2.61
,但是当使用该轮时它会给我$2.61
,这也意味着263
。上面的例子是正确的简单数学。
答案 0 :(得分:2)
为了避免这样的计算打嗝,只围绕最终结果。保持所有其他计算尽可能准确:
$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.
答案 1 :(得分:0)
您可以指定精度和舍入方法以保持一致(PHP round()),然后您可以处理实际值。数学技巧如乘以10的倍数只会让它在长期内更加混乱。
$amount += round(($amount / 29) + 30, 2, PHP_ROUND_HALF_UP);
这会解决您的问题吗?