1

mysqlにfloat型として格納されている番号があります。私が読んだことから、floor()を使用してフロートを変換できるはずですが、これや他のことを試してみてもうまくいきません。誰かが私が間違っていることを見つけられることを願っていますか?

例..

データベースは価格を$25.00と表示します-私のphpページには、次のコードがあります(価格行を$ priceに変換した後):

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

私の結果は印刷です:

$25.00
0

また、「floor」を「round」に置き換えてみました。同じ結果。

4

2 に答える 2

6

これは$25.00、入力として使用していて、$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
于 2011-09-06T01:49:57.583 に答える
0

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

$price = '$25.25';
echo sprintf('$%0.2f', floor(preg_replace('/[^\d\.]/', null, $price)));
于 2011-09-06T01:53:05.190 に答える