Код на PHP для функции потолка

Кто-нибудь когда-либо программировал функцию PHP (или Perl), чтобы получить максимальное значение в стиле Excel?


person Community    schedule 18.09.2008    source источник
comment
Что означает стиль Excel? В PHP есть встроенная функция ceil()...   -  person Paige Ruten    schedule 18.09.2008
comment
Чтобы помочь предотвратить больше ответов "Использовать функцию ceil()"... вот определение того, как функция ceil в M$Excel возвращает Возвращает число, округленное в большую сторону от нуля до ближайшего кратного значимости. Например, если вы не хотите использовать пенни в ценах, а ваш продукт стоит 4,42 доллара, используйте формулу =ПОТОЛОК(4,42;0,05) для округления цен до ближайшего никеля.   -  person lhagemann    schedule 16.11.2012


Ответы (3)


Это должен быть ответ из комментариев php.net:

// MS Excel function: Ceiling( number, significance ) 


// duplicates m$ excel's ceiling function
if( !function_exists('ceiling') )
{
    function ceiling($number, $significance = 1)
    {
        return ( is_numeric($number) && is_numeric($significance) ) ? (ceil($number/$significance)*$significance) : false;
    }
}

echo ceiling(0, 1000);     // 0
echo ceiling(1, 1);        // 1000
echo ceiling(1001, 1000);  // 2000
echo ceiling(1.27, 0.05);  // 1.30
person Superbiji    schedule 10.04.2012
comment
Не обрабатывает негативы так же, как Excel. Чтобы исправить это, вы можете использовать round() с PHP_ROUND_HALF_UP вместо ceil(). Обратите внимание, что round() также имеет параметр точности, хотя он может разрешать округление только до степени 10. - person Brilliand; 01.07.2013

"Функция потолка Microsoft Excel не следует математическому определению, а скорее, как и оператор (int) в C, представляет собой смесь функций пола и потолка: для x ≥ 0 она возвращает потолок(x), а для x ‹ 0 возвращает пол (x). Это соответствует формату файла Office Open XML. Например, ПОТОЛОК (-4,5) возвращает -5. Математическая функция потолка может быть эмулирована в Excel с помощью формулы "-INT (-значение)" (обратите внимание, что это не общее правило, так как оно зависит от функции Excel INT, которая ведет себя не так, как в большинстве языков программирования)." - из википедия

Если встроенная в php функция ceil работает неправильно, вы можете создать новую функцию, например

function excel_ceil($num){
    return ($num>0)?ceil($num):floor($num);
}

надеюсь, это поможет

person Jacob    schedule 18.09.2008
comment
не так просто, функция потолка Excel имеет два параметра... которые имеют большое значение. Ceiling( number, significance ) - person Superbiji; 10.04.2012

Извините, не совсем понятно, что такое "стиль Excel", но в PHP есть функция ceil.

person Paolo Bergantino    schedule 18.09.2008
comment
Согласно документации M $ Excel ... Потолок в Excel сильно отличается от стандартной математической функции потолка: возвращает число, округленное вверх, от нуля до ближайшего кратного значения. Например, если вы не хотите использовать пенни в ценах, а ваш продукт стоит 4,42 доллара, используйте формулу =ПОТОЛОК(4,42;0,05) для округления цен до ближайшего никеля. - person lhagemann; 16.11.2012