web-dev-qa-db-ja.com

フロートが常にPHPで切り上げられるようにするにはどうすればよいですか?

PHPの浮動小数が切り上げられることを確認したいany小数が存在する場合、数学的な丸め規則を気にせずに。この関数は次のように機能します。

_1.1 to 2
1.2 to 2
1.9 to 2
2.3 to 3
2.8 to 3
_

round()関数が存在することはわかっていますが、小数が見つかった場合、切り上げる関数が表示されません。これを行う簡単な方法はありますか?

27
Sotiris

ceil 関数を使用します。

$number = ceil(1.1); //2
62
ircmaxell

これは古いトピックですが、Googleには表示されます。精度に関するBlake Plumbの回答を拡張します。

ceil(1024.321 * 100) / 100;

100を掛けて100で割ると、100分の1しか機能しません。これは、10分の1、1,000、1000分の1などでは正確ではありません。

function round_up($number, $precision = 2)
{
    $fig = pow(10, $precision);
    return (ceil($number * $fig) / $fig);
}

結果:

var_dump(round_up(1024.654321, 0)); // Output: float(1025)
var_dump(round_up(1024.654321, 1)); // Output: float(1024.7)
var_dump(round_up(1024.654321, 2)); // Output: float(1024.66)
var_dump(round_up(1024.654321, 3)); // Output: float(1024.655)
var_dump(round_up(1024.654321, 4)); // Output: float(1024.6544)
var_dump(round_up(1024.654321, 5)); // Output: float(1024.65433)
var_dump(round_up(1024.654321, 6)); // Output: float(1024.654321)

メモ:

オリジナルのスニペットを改善するためのJoseph McDermottとbrandomからの寄稿に感謝します。

17
ash

Ceil はあなたのためにそれを行います

例から:

<?php
echo ceil(4.3);    // 5
echo ceil(9.999);  // 10
echo ceil(-3.14);  // -3
?>
10
lethalMango

この質問はずっと前から回答されていますが、このトピックについてGoogle検索を行ったときに出てきました。正確に切り上げる場合は、関数ceilを使用して、表現する小数点の数で数値を掛け、その数値で除算することをお勧めします。

ceil(1024.321*100)/100

1024.33を生成します

10
Blake Plumb

私はアッシュの答えとジョセフの選択が好きなので、次のことを提案します。

$fig = pow(10, $precision);

ゼロおよび負の精度値esでも機能するはずです。

var_dump(round_up(1024.654321, -1)); // Output: float(103)
2
brandom

私はアッシュの反応が好きですが、

$fig = (int) str_pad('1', $precision + 1, '0');

精度「2」を指定した場合、小数点以下2桁に丸められることを期待しています。たぶん選択の問題。回答をありがとうAsh、うまくいきます。

2