2016-07-14 7 views
1

フロートを掛ける私持っている私は、0.25%(有料)との合計(小計ために料金を追加)は、間違った答えを取得(PHP)

によって乗算たいこと、cURLの呼び出しからデータを返すフロート

コード:

var_dump(var_dump($obook['Bid']); 
echo number_format(($obook['Bid'] *= 0.0025) + $obook['Bid'], 8);); 

出力:

float(0.01191616) 
0.00005958 

私はパーセント量を得ることができるけど、小計に追加しません。

手数料と合計額を計算するにはどうすればよいですか?

すなわち0.01191616 * 0.0025 = $料

$料+ 0.01191616 = $ new_grand_total

UPDATE: これは正しくありません:

$commis = $obook['Bid'] *= 0.0025; 
var_dump(number_format($commis, 8)); 

出力:

string(10) "0.00002976" 
+0

をなぜあなたはまだ使用しています'* ='の更新で? '*'と '* ='の違いはまだ分かりませんか? – Barmar

答えて

1
$obook['Bid'] *= 0.0025 

は、変数に0.0025を掛けて、その結果を$obook['Bid']に戻すことを意味します。次に、$obook['Bid']を追加すると、その結果が倍増します。言い換えれば

、あなたのコードは同等です:あなたは、$obook['Bid']の元の値を失うだけの料金でそれを置き換える、そして自分自身に料金を追加している、このため

$obook['Bid'] = $obook['Bid'] * 0.0025; 
echo number_format(2 * $obook['Bid'], 8); 

変数を更新しない場合は、*ではなく、*=を使用する必要があります。

$new_grand_total = $obook['Bid'] * 0.0025 + $obook['Bid']; 

あなたが行うことができますので、あなたはまた、x * y + xx * (1+y)と同等であることを実現するために高校の代数を使用することができます。

$new_grand_total = $obook['bid'] * 1.0025; 
+0

それから悪い数学が吐き出される。 0.01190264回0.0025と0.01190264は私の計算機で0.01193239に等しい。 – dooode

+0

どこから '0.01190264'を取得しますか?元の値は '0.01191616'です。 '0.0025'を乗算すると' 0.0000297904'が得られ、倍増すると結果は '0.00005958'になります。 – Barmar

+0

@dooodeなぜ '0.01190264'を追加していますか?あなたは答えの要点を理解していませんでしたか?それは、元の値ではなく、乗算の結果を加えているということですか? – Barmar

0

ではなく、次の操作を行います。

$obook['bid'] *= 1.0025 
+0

小計と合計するとどうなりますか?それは手数料金額だけを与えます。 – dooode

+0

あなたが '0.0025'を使うとちょうど料金がかかります。私は '1.0025'を使用しました。 – BeetleJuice

+0

手数料は問題ありません。その小計に「手数料計算に続いて」追加された手数料を得ることは、私の問題がどこにあるかです。 – dooode

関連する問題