1
0
mirror of https://github.com/DanilaFe/abacus synced 2024-12-23 07:50:09 -08:00

Add ceiling to NumberInterface and the two numbers that implement it.

This commit is contained in:
Arthur Drobot 2017-07-31 13:25:23 -07:00
parent 9a6b695f97
commit afb57cf69b
3 changed files with 18 additions and 1 deletions

View File

@ -93,6 +93,11 @@ public class NaiveNumber implements NumberInterface {
return this.compareTo(ZERO);
}
@Override
public int ceiling() {
return (int) Math.ceil(value);
}
@Override
public NumberInterface promoteTo(Class<? extends NumberInterface> toClass) {
if (toClass == this.getClass()) return this;

View File

@ -79,6 +79,12 @@ public interface NumberInterface {
*/
int signum();
/**
* Returns the least integer greater than or equal to the number.
* @return the least integer >= the number, if int can hold the value.
*/
int ceiling();
/**
* Promotes this class to another number class.
*

View File

@ -1,6 +1,7 @@
package org.nwapw.abacus.number;
import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;
public class PreciseNumber implements NumberInterface {
@ -49,7 +50,7 @@ public class PreciseNumber implements NumberInterface {
@Override
public NumberInterface multiply(NumberInterface multiplier) {
return new PreciseNumber(value.multiply(((PreciseNumber) multiplier).value));
return new PreciseNumber(this.value.multiply(((PreciseNumber) multiplier).value));
}
@Override
@ -94,6 +95,11 @@ public class PreciseNumber implements NumberInterface {
return value.signum();
}
@Override
public int ceiling() {
return (int) Math.ceil(value.doubleValue());
}
@Override
public NumberInterface negate() {
return new PreciseNumber(value.negate());