0

ねえ、私はお金の使用を伴う私のプロジェクトに取り組んでいます。round はもう使用しないようにしています。これは、最も近い 10 分の 1 に四捨五入していて、正確な数値が必要なためです。私がそれを使用していた理由の 1 つは、それが整数を与えていたからです。

私が数値システムを操作し100 = $1, 2000 = $20, etc.. ている方法は、現在ラウンド関数を使用していたということです。これは、小数点を取り除き、整数を与えるためです。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%て加算すると、次のようになります。 - これは、.300.36525$2.25 which than would be 261 = $2.61

問題は四捨五入によるもので、Stripe パネル(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%て加算すると、次のようになります。 - これは、.300.36525$2.25 which than would be 261 = $2.61

これで、請求される金額の実際の値は になりますが$2.61、代わりにラウンドを使用すると、263これも意味し$2.63ます。上記の例は、正しい単純な計算です。

4

2 に答える 2

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.
于 2013-07-21T18:41:18.527 に答える
0

精度と丸め方法を指定して一貫性を保つことができます ( PHP round() )。その後、実際の値を処理できます。10 の倍数による掛け算のような数学のトリックを行うと、長期的にはさらに混乱するだけです。

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

これで問題は解決しますか?

于 2013-07-21T18:39:35.650 に答える