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