Java BigDecimal против Android BigDecimal - PullRequest
       13

Java BigDecimal против Android BigDecimal

0 голосов
/ 25 сентября 2018

Я сталкивался с java.math.BigDecimal и android.icu.math.BigDecimal, так как мне требуется использовать BigDecimal в проекте.

Я понял, что Android BigDecimal требует API уровня 24

Чем отличаются эти два класса?Интересно, есть ли оптимизация производительности в реализации Android?

Ответы [ 3 ]

0 голосов
/ 25 сентября 2018

Либо используйте java.math.BigDecimal, либо android.icu.math.BigDecimal, разница в производительности между ними не будет.Поскольку это базовый класс, Android BigDecimal был воссоздан со ссылкой на Java BigDecimal.

Если вы спросите разницу между обоими, то

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

https://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html https://developer.android.com/reference/java/math/BigDecimal

Android заново создает классы, чтобы добавить некоторые функции в существующие классы.

0 голосов
/ 25 сентября 2018

android.icu.math.BigDecimal является частью библиотеки ICU (Международные компоненты для Unicode).Начиная с API 24, платформа Android предоставляет некоторые из классов ICU4J, которые вы можете использовать. Документация Android по Unicode и I18N поддерживает состояния:

Некоторые классы в пакетах java и android имеют эквиваленты, найденные в ICU4J.Однако ICU4J часто обеспечивает более широкую поддержку стандартов и языков.

Не смущайтесь приведенной выше цитатой, поскольку классы ICU находятся в пакете android.Они были перемещены в android.icu из com.ibm.icu во избежание конфликтов.

В частности, по поводу BigDecimal: В интернете я нашел обсуждение , которое заключает, что BigDecimal былодоступно в ICU до того, как оно стало доступно в Java, и хранится в библиотеке для целей совместимости.

Итог: используйте любую реализацию, которая вам нравится, но java.math.BigDecimal в будущем вряд ли будет устаревшей.

0 голосов
/ 25 сентября 2018

Я думаю, что разница в TLDR заключается только в том, что java.math.BigDecimal для Java, а android.icu.math.BigDecimal для Kotlin.

Вы можете прочитать их документацию для более детальных различий.

https://developer.android.com/reference/java/math/BigDecimal https://developer.android.com/reference/kotlin/android/icu/math/BigDecimal

...