2011-06-21 3 views
2

なぜ87.5で、87.50ではないのですか?PHPのbcmul()スケールで混乱しています

<?php 

$quantity = 25; 
switch ($quantity) 
{ 
    case ($quantity <= 50): 
     $price = 3.50; 
     break; 
    case ($quantity <= 100): 
     $price = 3.00; 
     break; 
    default: 
     break; 

} 
echo bcmul($price, $quantity, 2); 
// 87.5 

?> 
+0

を小数点以下第三位がゼロなので...それは87.5以下でpreceiseません。 3を指定し、結果が87.501だった場合、ゼロが含まれます。 –

+0

私は、あなたがそれに投げた数にスケールが表示されているという印象を受けました。表示するには 'number_format()'を使うべきですか? –

+0

はい、下記の回答をご覧ください。 –

答えて

2

代わりbcmul()

echo number_format(bcmul($price, $quantity, 2), 2, '.'); // forces to output always 2 diget after . 
+0

私はこれを元々持っていましたが、 'bcmath'関数を一貫して使うことにしました。他の選択肢はありませんか? –

+0

bcmul()の後にnumber_format()を使用できます。 number_format()は出力書式設定用です。 – powtac

+0

@フランシス・ギルバートの反応を見て、それをまとめました。ありがとう! –

1

の使用number_format()をMathmatically 87.5は87.50です。追加の数字の詰め込みが必要な場合は、number_formatまたはmoney_formatを使用して余分な文字を表示することができます。

4

87.50を87.50として丸めます。修正するには、あなたが必要があるだろう:

number_format("87.50",2); 
+0

助けてくれてありがとう! –

+0

私はあなたのために働くことを望む:)。 –

関連する問題