Java BigDecimal与Android BigDecimal

时间:2018-09-25 08:01:33

标签: java android bigdecimal

我需要在项目中使用ISO 8859时遇到java.math.BigDecimalandroid.icu.math.BigDecimal

我已经意识到Android BigDecimal需要API级别24

这两个类之间有什么区别?我想知道Android实施中是否有任何性能优化?

3 个答案:

答案 0 :(得分:5)

android.icu.math.BigDecimalICU library(Unicode的国际组件)的一部分。从API 24开始,Android框架公开了一些ICU4J类供您使用。 Android documentation on Unicode and I18N support指出:

  

javaandroid包中的某些类具有与这些类等效的类   在ICU4J中找到。但是,ICU4J通常会为   标准和语言。

不要被上面的引用所迷惑,因为ICU类确实位于android包中。为了避免冲突,它们已从android.icu移到com.ibm.icu

特别是关于BigDecimalI found a discussion on the internet得出的结论是,BigDecimal在Java中可用之前在ICU中可用,并且出于兼容性目的而保留在库中。

底线:使用任何您喜欢的实现方式,但是java.math.BigDecimal在将来不太可能被弃用。

答案 1 :(得分:1)

使用java.math.BigDecimalandroid.icu.math.BigDecimal,两者之间不会有性能差异。由于这些是基本类,因此参考Java BigDecimal重新创建了Android BigDecimal

如果您问两者之间的区别,那么

  • 在目的上都是相同的。
  • 根据代码,它们可能有所不同,可以具有更少或更多的方法。因此,您应该阅读两个类中的所有方法以找出差异。

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

Android重新创建类以向现有类中添加一些功能。

答案 2 :(得分:-3)

我认为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