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

    +71

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    // *** Функция truncation - округление числа до сотых ***
    // ******************************************************
    function truncation($number)
    {
    	global $n;
    	$n = strpos($number,'.');
    	if ($n > 0) {$n = substr($number,0,$n).substr($number,$n,3);} else {$n = $number;}
    	return;
    }

    Комментарии излишни

    Запостил: UnnamedUser, 16 Августа 2012

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

    • Меня больше поразила не работа с числами, как со строками, а возвращение результата через глобальную переменную. Это сильно.
      Ответить
      • А зачем в PHP реентерабельные функции?
        Ответить
      • Это просто волшебно.
        Я бы даже сказал, сказочно.
        Ответить
    • s/Функция/Процедура/.
      Ответить
    • У вас $n - это как $_$ в Perl?
      Ответить
      • Хотя нет, я понял: на каждый тип должна быть своя волшебная переменная. Для чисел - $n, для строк - $s, etc.
        Ответить
        • А почему $number не глобальная?
          Ответить
          • Точно. Тогда вызов будет вообще в три оператора:
            $number = $num_to_trunc;
            truncation();
            $result = $n;

            Более того, читая этот код, никто даже и близко не заподозрит, если не разбирался в устройстве функции, что здесь происходит. С виду - три независимых действия.
            Ответить
            • Классика бейсика:
              100 number$ = "1000500.323332"
              110 gosub 200
              120 print n$
              ...
              200 rem truncation
              Ответить
              • 0 О.К.

                где return из gosub?
                Ответить
                • В 315й строке. Просто она не показана.
                  Ответить
                  • Её стыдно показывать, потому что перед gosub в ней ещё сто операторов, разделённых двоеточиями?
                    Ответить
    • Боже, тут есть всё.
      Ответить
    • Помимо прочего , зачем вот так $n = substr($number,0,$n).substr($number,$n,3 ); ?
      можно было {$n = substr($number,0,$n+3);}
      Ответить
    • .140001 не схавает, зато 0.01а001 схавает
      Ответить
      • А отрицательные числа придумали демоны... как и экспоненциальную форму.
        Ответить
    • Warning! The following program contains language that might be offensive to some assholes...
      Ответить
    • reference...round...не, не слышал...
      Ответить
    • /* Комментарии излишни */
      Ответить

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