<?php
namespace PhpOffice\PhpSpreadsheet\Calculation\MathTrig;
use Exception;
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
use PhpOffice\PhpSpreadsheet\Calculation\MathTrig;
class Ceiling
{
public static function funcCeiling($number, $significance = null)
{
MathTrig::nullFalseTrueToNumber($number);
$significance = Functions::flattenSingleValue($significance);
if ($significance === null) {
self::floorCheck1Arg();
$significance = ((float) $number < 0) ? -1 : 1;
}
if ((is_numeric($number)) && (is_numeric($significance))) {
return self::argumentsOk((float) $number, (float) $significance);
}
return Functions::VALUE();
}
private static function argumentsOk(float $number, float $significance)
{
if (empty($number * $significance)) {
return 0.0;
}
if (MathTrig::returnSign($number) == MathTrig::returnSign($significance)) {
return ceil($number / $significance) * $significance;
}
return Functions::NAN();
}
private static function floorCheck1Arg(): void
{
$compatibility = Functions::getCompatibilityMode();
if ($compatibility === Functions::COMPATIBILITY_EXCEL) {
throw new Exception('Excel requires 2 arguments for CEILING');
}
}
}