@@ 128-149 (lines=22) @@ | ||
125 | * |
|
126 | * @return float Rounded Number |
|
127 | */ |
|
128 | public static function CEILING($number, $significance = null) |
|
129 | { |
|
130 | $number = Functions::flattenSingleValue($number); |
|
131 | $significance = Functions::flattenSingleValue($significance); |
|
132 | ||
133 | if ((is_null($significance)) && |
|
134 | (Functions::getCompatibilityMode() == Functions::COMPATIBILITY_GNUMERIC)) { |
|
135 | $significance = $number / abs($number); |
|
136 | } |
|
137 | ||
138 | if ((is_numeric($number)) && (is_numeric($significance))) { |
|
139 | if (($number == 0.0) || ($significance == 0.0)) { |
|
140 | return 0.0; |
|
141 | } elseif (self::SIGN($number) == self::SIGN($significance)) { |
|
142 | return ceil($number / $significance) * $significance; |
|
143 | } |
|
144 | ||
145 | return Functions::NAN(); |
|
146 | } |
|
147 | ||
148 | return Functions::VALUE(); |
|
149 | } |
|
150 | ||
151 | /** |
|
152 | * COMBIN. |
|
@@ 313-336 (lines=24) @@ | ||
310 | * |
|
311 | * @return float Rounded Number |
|
312 | */ |
|
313 | public static function FLOOR($number, $significance = null) |
|
314 | { |
|
315 | $number = Functions::flattenSingleValue($number); |
|
316 | $significance = Functions::flattenSingleValue($significance); |
|
317 | ||
318 | if ((is_null($significance)) && |
|
319 | (Functions::getCompatibilityMode() == Functions::COMPATIBILITY_GNUMERIC)) { |
|
320 | $significance = $number / abs($number); |
|
321 | } |
|
322 | ||
323 | if ((is_numeric($number)) && (is_numeric($significance))) { |
|
324 | if ($significance == 0.0) { |
|
325 | return Functions::DIV0(); |
|
326 | } elseif ($number == 0.0) { |
|
327 | return 0.0; |
|
328 | } elseif (self::SIGN($number) == self::SIGN($significance)) { |
|
329 | return floor($number / $significance) * $significance; |
|
330 | } |
|
331 | ||
332 | return Functions::NAN(); |
|
333 | } |
|
334 | ||
335 | return Functions::VALUE(); |
|
336 | } |
|
337 | ||
338 | /** |
|
339 | * GCD. |