16

データベースから番号を取得します。この番号は または のいずれfloatintです。

数値の小数精度を に設定する必要があり3ます。これにより、数値は (小数に関して)5.020または1518845.756.

PHP の使用

round($number, $precision)

問題があります:

数値を丸めます。従わないように見える値を変更せずに、小数点以下を短くするだけの関数が必要round( )です。

4

5 に答える 5

31

これを達成するために使用できますnumber_format()

echo number_format((float) $number, $precision, '.', ''); 

これは に変換1518845.756789され1518845.757ます。

しかし、小数点以下の桁数を 3 に切り捨て、roundではなく切り捨てたい場合は、次のようにします。

$number = intval($number * ($p = pow(10, $precision))) / $p;

最初は難しそうに見えるかもしれませんが、コンセプトは実にシンプルです。数値があり、それを 10 3倍し( になる1518845756.789)、整数にキャストして小数点以下 3 桁目以降をすべて削除し ( になる1518845756)、結果を 10 3で割る( になる1518845.756)。

デモ

于 2013-11-09T11:53:53.077 に答える
15

floor小数のように聞こえます。だからあなたは何かを試すことができます

floor($number*1000)/1000
于 2013-11-09T12:01:34.520 に答える
3

私の理解が正しければ、丸めを行わずに精度を 3 にする必要があります。

したがって、number_format()精度 4 を使用して最後の桁を削除するという考え方です。

$number = '1518845.756789';
$precision = 3;

echo substr(number_format($number, $precision+1, '.', ''), 0, -1);

表示されます:

1518845.756

それよりも:

1518845.757

リンク : number_format(),substr()

于 2013-11-09T12:02:29.470 に答える