データベースから番号を取得します。この番号は または のいずれfloat
かint
です。
数値の小数精度を に設定する必要があり3
ます。これにより、数値は (小数に関して)5.020
または1518845.756
.
PHP の使用
round($number, $precision)
問題があります:
数値を丸めます。従わないように見える値を変更せずに、小数点以下を短くするだけの関数が必要round( )
です。
これを達成するために使用できます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
)。
floor
小数のように聞こえます。だからあなたは何かを試すことができます
floor($number*1000)/1000
私の理解が正しければ、丸めを行わずに精度を 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()