1. PHP / Говнокод #17513

    +161

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    <?php
    /**
     * Округляет число до заданного количества знаков после запятой.
     * @param float $v	- округляемое число.
     * @param int $prec - количество знаков после запятой (по-умолчанию: 0).
     * @param str $mode - режим округления: ceil | floor | round (по-умолчанию: round).
     * @return float округлённое число.
     */
    function round2($v, $prec = 0, $mode = "round") {
    	for ($k = 1, $i = 0; $i < $prec; $i++, $k *= 10)
    		;
    	switch ($mode) {
    		case "ceil" : $v = ceil($k * $v) / $k;
    			break;
    		case "floor" : $v = floor($k * $v) / $k;
    			break;
    		default : $v = round($k * $v) / $k;
    	}
    
    	return $v;
    }

    Запостил: kissarat, 24 Января 2015

    Комментарии (7) RSS

    • > $mode = "round"
      И все потому что функции не являются объектами первого класса. Эх.
      Ответить
      • Это же PHP. Эконом-класс.
        Ответить
      • Зато там можно невозбранно вызывать функции по имени:
        function round2($v, $prec = 0, $round_func = "round") {
            // ...
            return $round_func($k * $v) / $k;
        }
        Ответить
        • Офигеть, оно даже лямбду кушает. Но все равно криво :)
          Ответить
    • Не говоря уже о том что такая функция ненужна, потому что round принимает соответствующие параметры
      ( float $val [, int $precision = 0 [, int $mode = PHP_ROUND_HALF_UP ]] )
      Ответить

    Добавить комментарий