@@ 105-126 (lines=22) @@ | ||
102 | * |
|
103 | * @return float Rounded Number |
|
104 | */ |
|
105 | public static function CEILING($number, $significance = null) |
|
106 | { |
|
107 | $number = Functions::flattenSingleValue($number); |
|
108 | $significance = Functions::flattenSingleValue($significance); |
|
109 | ||
110 | if (($significance === null) && |
|
111 | (Functions::getCompatibilityMode() == Functions::COMPATIBILITY_GNUMERIC)) { |
|
112 | $significance = $number / abs($number); |
|
113 | } |
|
114 | ||
115 | if ((is_numeric($number)) && (is_numeric($significance))) { |
|
116 | if (($number == 0.0) || ($significance == 0.0)) { |
|
117 | return 0.0; |
|
118 | } elseif (self::SIGN($number) == self::SIGN($significance)) { |
|
119 | return ceil($number / $significance) * $significance; |
|
120 | } |
|
121 | ||
122 | return Functions::NAN(); |
|
123 | } |
|
124 | ||
125 | return Functions::VALUE(); |
|
126 | } |
|
127 | ||
128 | /** |
|
129 | * COMBIN. |
|
@@ 290-313 (lines=24) @@ | ||
287 | * |
|
288 | * @return float Rounded Number |
|
289 | */ |
|
290 | public static function FLOOR($number, $significance = null) |
|
291 | { |
|
292 | $number = Functions::flattenSingleValue($number); |
|
293 | $significance = Functions::flattenSingleValue($significance); |
|
294 | ||
295 | if (($significance === null) && |
|
296 | (Functions::getCompatibilityMode() == Functions::COMPATIBILITY_GNUMERIC)) { |
|
297 | $significance = $number / abs($number); |
|
298 | } |
|
299 | ||
300 | if ((is_numeric($number)) && (is_numeric($significance))) { |
|
301 | if ($significance == 0.0) { |
|
302 | return Functions::DIV0(); |
|
303 | } elseif ($number == 0.0) { |
|
304 | return 0.0; |
|
305 | } elseif (self::SIGN($number) == self::SIGN($significance)) { |
|
306 | return floor($number / $significance) * $significance; |
|
307 | } |
|
308 | ||
309 | return Functions::NAN(); |
|
310 | } |
|
311 | ||
312 | return Functions::VALUE(); |
|
313 | } |
|
314 | ||
315 | private static function evaluateGCD($a, $b) |
|
316 | { |