java.lang.Object
xyz.cofe.num.BaseNumbers
- All Implemented Interfaces:
Numbers<java.lang.Number>
public class BaseNumbers extends java.lang.Object implements Numbers<java.lang.Number>
- Author:
- Kamnev Georgiy
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classBaseNumbers.BaseNumbersBuilderВыбор общего основаия -
Field Summary
Fields Modifier and Type Field Description protected BitCountminBitsCountМинимальное кол-во бит на значение числаprotected java.lang.NumberoneЧисло обозначающее единицуprotected java.lang.NumberzeroЧисло обозначающее ноль -
Constructor Summary
Constructors Constructor Description BaseNumbers()Конструктор по умолчанию:
minBitsCount = BitCount.INT
zero = 0
one = 1BaseNumbers(BitCount minBitsCount, java.lang.Number zero, java.lang.Number one)Конструктор -
Method Summary
Modifier and Type Method Description java.lang.Numberadd(java.lang.Number a, java.lang.Number b)Сложение чиселstatic BaseNumbers.BaseNumbersBuilderbase()Выбор общего основанияstatic intbitCount(java.lang.Number n)Возвращает кол-во бит испольуемых для представления числаstatic java.lang.Numbercast(java.lang.Number num, java.lang.Class<? extends java.lang.Number> base)Преобразует число к указанному типуstatic CommonBasecommonBase(java.lang.Number n0, java.lang.Number n1)Возвращает интерфейс для работы с общим основанием чисел.static CommonBasecommonBase(java.lang.Number n0, java.lang.Number n1, BitCount minBitsCount)Возвращает интерфейс для работы с общим основанием чисел.java.lang.Numberdiv(java.lang.Number a, java.lang.Number b)Деление чиселbooleanequals(java.lang.Number a, java.lang.Number b)Сравнивает два числа на равностьbooleaninfinity(java.lang.Number n)Проверяет что число является бесконечностьюstatic booleanintegerNumber(java.lang.Number n)Проверяет что указанное число является целым / натуральным (byte,short,int,long,BigInteger,AtomicInteger,AtomicLong)booleanless(java.lang.Number a, java.lang.Number b)Сравннвает числаbooleanmore(java.lang.Number a, java.lang.Number b)Сравннвает числаjava.lang.Numbermul(java.lang.Number a, java.lang.Number b)Умножение чиселjava.lang.Numbernext(java.lang.Number n)Возвращает следующее числоjava.lang.Numberone()Возвращает единицуjava.lang.Numberprev(java.lang.Number n)Возвращает предыдущее числоstatic booleanratioNumber(java.lang.Number n)Проверяет что указанное число является дробным / рациональным (float,double,BigDecimal)java.lang.Numberremainder(java.lang.Number a, java.lang.Number b)Остаток от деленияstatic SingleBasesingleBase(java.lang.Number n0, BitCount minBitsCount)Возвращает интерфейс для операции над числамиjava.lang.Numbersub(java.lang.Number a, java.lang.Number b)Вычитание чиселbooleanundefined(java.lang.Number n)Проверяет что число не определенноstatic booleanunlimited(java.lang.Number n)Проверяет что указанное число относиться к большим числам (BigInteger, BigDecimal)java.lang.Numberzero()Возвращает нулевое числоbooleanzero(java.lang.Number n)Проверяет что число является нулем
-
Field Details
-
minBitsCount
Минимальное кол-во бит на значение числа -
zero
protected final java.lang.Number zeroЧисло обозначающее ноль -
one
protected final java.lang.Number oneЧисло обозначающее единицу
-
-
Constructor Details
-
BaseNumbers
public BaseNumbers()Конструктор по умолчанию:
minBitsCount = BitCount.INT
zero = 0
one = 1 -
BaseNumbers
Конструктор- Parameters:
minBitsCount- минимальное кол-во битzero- число нольone- число единица
-
-
Method Details
-
integerNumber
public static boolean integerNumber(java.lang.Number n)Проверяет что указанное число является целым / натуральным (byte,short,int,long,BigInteger,AtomicInteger,AtomicLong)- Parameters:
n- чило- Returns:
- true - является целым числом
-
ratioNumber
public static boolean ratioNumber(java.lang.Number n)Проверяет что указанное число является дробным / рациональным (float,double,BigDecimal)- Parameters:
n- число- Returns:
- true - является дробным
-
bitCount
public static int bitCount(java.lang.Number n)Возвращает кол-во бит испольуемых для представления числа- Parameters:
n- Число- Returns:
- Кол-во бит, 0 - для null, -1 для неизвестного типа
-
unlimited
public static boolean unlimited(java.lang.Number n)Проверяет что указанное число относиться к большим числам (BigInteger, BigDecimal)- Parameters:
n- Число- Returns:
- true - является большим
-
cast
public static java.lang.Number cast(java.lang.Number num, java.lang.Class<? extends java.lang.Number> base)Преобразует число к указанному типу- Parameters:
num- Числоbase- Тип- Returns:
- Число указанного типа
-
singleBase
Возвращает интерфейс для операции над числами- Parameters:
n0- ЧислоminBitsCount- минимальное кол-во бит- Returns:
- Интерфейс для мат операций
-
commonBase
Возвращает интерфейс для работы с общим основанием чисел. Основание (тип чисел) береться такое чтоб не потерять точность вычислений.
смcommonBase(Number, Number, BitCount)- Parameters:
n0- Число Аn1- Число Б- Returns:
- Возвращает интерфейс с минимальной потерей точности
-
commonBase
public static CommonBase commonBase(java.lang.Number n0, java.lang.Number n1, BitCount minBitsCount)Возвращает интерфейс для работы с общим основанием чисел. Основание (тип чисел) береться такое чтоб не потерять точность вычислений.Алгоритм выбора:
- Числа (любое) не ограничено по точности ?
unlimited(Number)- ДА - Числа (любое) дробное ?
ratioNumber(Number)- ДА - Основание -
BigDecimalNumbers - НЕТ - Основание -
BigIntegerNumbers
- ДА - Основание -
- НЕТ (число ограничено по кол-ву бит)
Числа атомарные и их тип совпадает ?- ДА - используется соответ атомарные реализации (
AtomicIntegerNumbers,AtomicLongNumbers) - НЕТ (числа не атомарные)
Числа дробные ?- ДА - Испольуется та реализация что даст большую точность:
DoubleNumbers,FloatNumbers - НЕТ - Испольуется та реализация что даст большую точность:
ByteNumbers,ShortNumbers,IntegerNumbers,LongNumbers
- ДА - Испольуется та реализация что даст большую точность:
- ДА - используется соответ атомарные реализации (
- ДА - Числа (любое) дробное ?
- Parameters:
n0- Число Аn1- Число БminBitsCount- (может быть null, тогда смBitCount.max(Number, Number)- Returns:
- Возвращает интерфейс с минимальной потерей точности
- Числа (любое) не ограничено по точности ?
-
base
Выбор общего основания- Returns:
- общее основание
-
zero
public java.lang.Number zero()Description copied from interface:NumbersВозвращает нулевое число -
one
public java.lang.Number one()Description copied from interface:NumbersВозвращает единицу -
zero
public boolean zero(java.lang.Number n)Description copied from interface:NumbersПроверяет что число является нулем -
undefined
public boolean undefined(java.lang.Number n)Description copied from interface:NumbersПроверяет что число не определенно -
infinity
public boolean infinity(java.lang.Number n)Description copied from interface:NumbersПроверяет что число является бесконечностью -
add
public java.lang.Number add(java.lang.Number a, java.lang.Number b)Description copied from interface:NumbersСложение чисел -
sub
public java.lang.Number sub(java.lang.Number a, java.lang.Number b)Description copied from interface:NumbersВычитание чисел -
mul
public java.lang.Number mul(java.lang.Number a, java.lang.Number b)Description copied from interface:NumbersУмножение чисел -
div
public java.lang.Number div(java.lang.Number a, java.lang.Number b)Description copied from interface:NumbersДеление чисел -
remainder
public java.lang.Number remainder(java.lang.Number a, java.lang.Number b)Description copied from interface:NumbersОстаток от деления -
equals
public boolean equals(java.lang.Number a, java.lang.Number b)Description copied from interface:NumbersСравнивает два числа на равность -
more
public boolean more(java.lang.Number a, java.lang.Number b)Description copied from interface:NumbersСравннвает числа -
less
public boolean less(java.lang.Number a, java.lang.Number b)Description copied from interface:NumbersСравннвает числа -
next
public java.lang.Number next(java.lang.Number n)Description copied from interface:NumbersВозвращает следующее число -
prev
public java.lang.Number prev(java.lang.Number n)Description copied from interface:NumbersВозвращает предыдущее число
-