Более функциональное число (чем Bigdecimal), содержащее библиотеку Java - PullRequest
1 голос
/ 11 марта 2011
  • Операция должна попытаться сохранить ответ того же типа, что и исходные данные, поэтому, если держатель начинался с двойного, то результат также должен быть двойным.

  • Если входные данные содержат держатели разных типов номеров, то они должны автоматически выбираться и т. Д.

  • Должен быть один тип Holder с геттерами, чтобы возвращать результат в виде целого числа, двойного, большого десятичного, большого целого и т. Д. С исключениями, генерируемыми в случае сбоя преобразования.

  • Код должен выглядеть как Bigdecimal.

  • Идеально неизменный

  • Код не должен знать или заботиться о том, что находится внутри держателя, операции просто работают, пока не потребуется преобразование на более поздней стадии.

  • К сожалению, BigDecimal не совсем подходит для моих нужд, в нем отсутствуют многие ключевые функции, например: синус, лог и большинство статических помощников по математике.

ApacheCommonsMath

Аксельбб предложил использовать математическую библиотеку apache commons. Основным классом использования в моем случае является DFP.

  • Изучая DFP, не существует простого способа передать BigDecimal / BigInteger и построить DFP. Было бы хорошо, если бы точность также была параметром и использовалась во время процесса всасывания.

  • ни одна из функций (например, умножение) не принимает контекст с точностью и округлением, как BigDecimal. Я действительно не понимаю, почему неуклюжий способ обработки точности и округления.

  • Что такое DfpField, что именно он делает и почему в DFP есть поля ??? Пожалуйста, не говорите мне этот Календарь снова.

  • нет методов для экспорта в BigDecimal или BigInteger

DFP

  • это оригинальное вдохновение для apache commons математический класс DFP?

  • отсутствует первая проблема с импортом из BigDecimal или BigInteger.

  • нет методов для экспорта в BigDecimal или BigInteger

Ответы [ 4 ]

1 голос
/ 23 марта 2011

Вы можете попробовать пакет gnu.math из языковой платформы kawa , который используется для реализации полной Схемы "числовая башня".Пакет должен быть довольно автономным и независимым от остальной части кавы.

1 голос
/ 11 марта 2011
1 голос
/ 11 марта 2011

BigDecimal не final. Вы можете расширить его и добавить методы (sine, log и т. Д.) В подкласс.

0 голосов
/ 11 марта 2011

Я думаю, что лучший способ - написать оболочку для BigDecimal и реализовать все ваши дополнительные опции.

...