Категории

[FAQ] Часто задаваемые вопросы и ответы

Проблемы и решения

Ошибки и исправления

Общие вопросы

Расширения

Установка и обновление

Модули

Шаблоны

Локализация интерфейса

Коммерческие предложения

Учимся бизнесу

Бизнес книги

Поисковая оптимизация (SEO)

Магазины на ShopOS

Хостинг для ShopOS

Предложения и пожелания

Курилка

Ошибка: function os_round()

В файле includes/functions/include.php имеется функция os_round().


function os_round($number, $precision) {
    if (strpos($number, '.') && (strlen(substr($number,
strpos($number, '.')+1)) > $precision)) {
      $number = substr($number, 0, strpos($number, '.') + 1 + $precision + 1);

      if (substr($number, -1) >= 5) {
        if ($precision > 1) {
          $number = substr($number, 0, -1) + ('0.' . str_repeat(0, $precision-1) . '1');
        } elseif ($precision == 1) {
          $number = substr($number, 0, -1) + 0.1;
        } else {
          $number = substr($number, 0, -1) + 1;
        }
      } else {
        $number = substr($number, 0, -1);
      }
    }
    return $number;
}

Так она будет выдавать что угодно, только не округление.
В файле admin/includes/functions/general.php имеется работающий ;) анаалог


function os_round($value, $precision) {
return round($value, $precision);
}

Заменить первую функцию второй.


А чем же после такой замены фирменная функция  os_round  будет отличаеться от обыкновенной PHP-функции round ?


Речь не о том, что os_round() будет отличаться от round(), а том, что os_round() будет работать. Как round(). ;)


Чтобы так

+ 1 + $precision + 1
гениально написать, что и сколько должен принять на грудь программер?



Речь не о том, что os_round() будет отличаться от round(), а том, что os_round() будет работать. Как round(). ;)


Намек был на то, что  os_round() - будет лишняя деталь. 

А первая функция правильно округляет выражения вида 
33 522.454
33тыс 522.454
Может, для того ее и писали?


grig вы троллите?
Ни фига не округляет первая функция. Вы хоть прогоняли её дибаггинг листом, чтоб такое говорить? Я прогонял до сумм в 10000000. Не округляет, зато регулярно искажает вывод (при каких-то аргументах рисует нули). Это первое.
Второе - у меня нет времени, ни желания выискивать везде в коде os_round() и заменять на round(), и вообще заниматься подобными глупейшими операциями.
Третье - если вам нечего сказать по существу.... ну вы меня поняли.



grig вы троллите?
Ни фига не округляет первая функция. Вы хоть прогоняли её дибаггинг листом, чтоб такое говорить? Я прогонял до сумм в 10000000. Не округляет, зато регулярно искажает вывод (при каких-то аргументах рисует нули). Это первое.
Второе - у меня нет времени, ни желания выискивать везде в коде os_round() и заменять на round(), и вообще заниматься подобными глупейшими операциями.
Третье - если вам нечего сказать по существу.... ну вы меня поняли.


1. Пример бы привели, один из миллионов прогнанных Вами
2. Нет времени - не надо, разве я заставляю?
3. Можно было б такие глупости и не писать, особенно если у Вас занятость большая.

По существу:  я лишь привел нестандартный пример, когда функция эта работает. И не очень понятно, откуда такая странная нервная реакция.


в этой ф-и уже сама идея округлять строку бредовая.. мы работаем с числом а потом уже его как хочш форматируй и т.д.

>+ 1 + $precision + 1
такого в оск еще много =)


Источник



Copyright ShopOS