2011-09-06 9 views
1

私は数値をfloat型としてmysqlに格納しています。私が読んだことから、float()を使って浮動小数点数を変換できるはずですが、これを試してみたり、何かが動いていません。誰かが私が間違っていることに気づくことを願っていますか?floatを整数に変換するには?

例..

データベースは$ 25.00と価格を示している - 私のPHPページでは、私は($価格に価格列を変換した後)、次のコードを持っている:

$price2 = floor($price); 
echo $price; 
echo '<br>'; 
echo $price2; 

私の結果が印刷されています:

$25.00 
0 

また、 'floor'を 'round'に置き換えてみました。同じ結果。あなたが入力して$として$25.00を使用しているためだ

+2

あなたは何を期待しましたか?あなたはフローリング '' $ ''です。 –

答えて

6

は、PHPを使用して、文字列を丸めるしようとしていると思います - PHPは0

  • floorに(非数値)の文字列を丸めます=切り捨てる。
  • ceil =切り上げ
  • roundは、彼らはグラマースクール

であなたを教えしかし、あなたは文字列で$を持っている場合は、それらのどれも動作しません、同じプロセスを=。私はあなたが'$' . round(str_replace('$', '', $price) * 100)/100のようなことをすることをお勧めします。 (乗算と除算は、ドルの代わりに最も近いペニーに丸められるようにします。str_replaceは、それが数値を扱うようにしてから、$の前に追加します。以下を参照してください)

$dollar = '$' . round(str_replace('$', '', $price) * 100)/100; 
// the following makes sure that there are two places to the right of the decimal 
$pieces = explode('.', $dollar); 
if(isset($pieces[1]) && strlen($pieces[1]) == 1) 
{ 
    $pieces[1].='0'; 
    $dollar = implode('.', $pieces); 
} 
// if you like, you can also make it so that if !pieces[1] add the pennies in 
+0

数秒で私を倒してください。 – canadiancreed

+2

文字列を数値に強制するとき、先頭の '$ 'は変換を0に戻します。文字列の丸めは、文字列が数。 – cdhowie

+0

ありがとう!愚かな間違いで申し訳ありません。素晴らしい説明!私はdbが25.00($ 25.00ではなく)の値を示しているので、私はこれより上のコードで$記号を追加したことを認識していませんでした – Andi

0

cwallenpooleによれば、数値以外の値を丸めることはできません。ただし、代わりに数値にすることができます。

$price = '$25.25'; 
echo sprintf('$%0.2f', floor(preg_replace('/[^\d\.]/', null, $price))); 
関連する問題