2012-03-30 10 views
1

xmlファイルから取得された後に変数に割り当てられたが、正しく出力されない数値。私はそれを回避する理由や方法についてはあまりよく分かりません。一例がこれです。PHPの丸めと天井が正しくデータ解析されない

$pricing_high = 1.15; 
echo $pricing_high; 

これは明らかに1.15を表示します。私はそうのようにこれを割り当てるときしかし:

$price = ceil($pricing_high/0.05) * 0.05; 
echo $price; 

これは2

$price = round($pricing_high/0.05) * 0.05; 
echo $price; 

これは私が渡したときに数字が正しく最寄りの5セントに切り上げてもらうにはどうすればよい1.

を表示を表示しますそれはこれが好きですか?ラウンド関数のPHPマニュアルのよう

+0

両方とも '1.15'を出力します。 – MichaelRushton

答えて

2

http://php.net/manual/en/function.round.php

あなたは2番目のパラメータとしての精度を指定することができる:

$pricing_high = 1.15; 
$price = round($pricing_high/0.05, 2) * 0.05; 
echo $price; 

第二パラメータの音符2

+0

$ price = round($ pricing_high/5,2)* 5で動作するようになった。どのようにして0を保持することができますか?たとえば、1を表示する代わりに、1.00または0.4から0.40を表示します。 –

+0

私はそれを持っていません:) $ price1 = sprintf( "%01.2f"、$ price);情報をありがとう! –

0

CEIL()にとfloor()はこの精度を持っていないので、結果を掛け合わせて分割するかもしれません。

1

1.15 = 1ドル15セントですか?その場合:

echo sprintf('%.2f', round($price/0.05) * 0.05); // Rounds to nearest 
echo sprintf('%.2f', ceil($price/0.05) * 0.05); // Rounds up 

テスト:

$price = 1.13; 

echo sprintf('%.2f', round($price/0.05) * 0.05); // Outputs: 1.15 
echo sprintf('%.2f', ceil($price/0.05) * 0.05); // Outputs: 1.15 

$price = 1.12; 

echo sprintf('%.2f', round($price/0.05) * 0.05); // Outputs: 1.10 
echo sprintf('%.2f', ceil($price/0.05) * 0.05); // Outputs: 1.15 

1.15の場合= 1.15セント、その後50.05を交換してください。

関連する問題