31

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

1.1 to 2
1.2 to 2
1.9 to 2
2.3 to 3
2.8 to 3

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

4

5 に答える 5

65

ceil関数を使用します。

$number = ceil(1.1); //2
于 2011-02-23T16:19:14.317 に答える
21

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

ceil(1024.321 * 100) / 100;

100 を掛けて 100 で割ると、100 分の 1 でしか機能しません。これは、10 分の 1、1000 分の 1、100 分の 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 からの貢献に感謝します。

于 2014-03-06T13:17:55.660 に答える
12

公式のCeil関数がそれを行います。

例から抜粋:

<?php
echo ceil(4.3);    // 5
echo ceil(9.999);  // 10
echo ceil(-3.14);  // -3
?>
于 2011-02-23T16:20:16.940 に答える
10

この質問には長い間回答がありましたが、このトピックについて Google 検索を行ったときに出てきました。正確に切り上げたい場合は、ceil 関数を使用し、表現したい小数点以下の桁数を数値に掛けてから、その数値で割るのが良い方法です。

ceil(1024.321*100)/100

1024.33を生成します

于 2012-11-15T17:42:33.903 に答える
3

アッシュの反応が好きですが、次のようになります。

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

精度「2」を指定すると、小数点以下 2 桁に丸められることが期待されます。選択の問題だと思いますが。答えてくれてありがとう Ash、うまくいきます。

于 2015-03-05T10:25:14.293 に答える