@@ 120-140 (lines=21) @@ | ||
117 | * @param float $significance The multiple to which you want to round. |
|
118 | * @return float Rounded Number |
|
119 | */ |
|
120 | public static function CEILING($number, $significance = null) |
|
121 | { |
|
122 | $number = Functions::flattenSingleValue($number); |
|
123 | $significance = Functions::flattenSingleValue($significance); |
|
124 | ||
125 | if ((is_null($significance)) && |
|
126 | (Functions::getCompatibilityMode() == Functions::COMPATIBILITY_GNUMERIC)) { |
|
127 | $significance = $number / abs($number); |
|
128 | } |
|
129 | ||
130 | if ((is_numeric($number)) && (is_numeric($significance))) { |
|
131 | if (($number == 0.0) || ($significance == 0.0)) { |
|
132 | return 0.0; |
|
133 | } elseif (self::SIGN($number) == self::SIGN($significance)) { |
|
134 | return ceil($number / $significance) * $significance; |
|
135 | } else { |
|
136 | return Functions::NAN(); |
|
137 | } |
|
138 | } |
|
139 | ||
140 | return Functions::VALUE(); |
|
141 | } |
|
142 | ||
143 | /** |
|
@@ 295-318 (lines=24) @@ | ||
292 | * @param float $significance Significance |
|
293 | * @return float Rounded Number |
|
294 | */ |
|
295 | public static function FLOOR($number, $significance = null) |
|
296 | { |
|
297 | $number = Functions::flattenSingleValue($number); |
|
298 | $significance = Functions::flattenSingleValue($significance); |
|
299 | ||
300 | if ((is_null($significance)) && |
|
301 | (Functions::getCompatibilityMode() == Functions::COMPATIBILITY_GNUMERIC)) { |
|
302 | $significance = $number / abs($number); |
|
303 | } |
|
304 | ||
305 | if ((is_numeric($number)) && (is_numeric($significance))) { |
|
306 | if ($significance == 0.0) { |
|
307 | return Functions::DIV0(); |
|
308 | } elseif ($number == 0.0) { |
|
309 | return 0.0; |
|
310 | } elseif (self::SIGN($number) == self::SIGN($significance)) { |
|
311 | return floor($number / $significance) * $significance; |
|
312 | } else { |
|
313 | return Functions::NAN(); |
|
314 | } |
|
315 | } |
|
316 | ||
317 | return Functions::VALUE(); |
|
318 | } |
|
319 | ||
320 | /** |
|
321 | * GCD |