Kotlin中货币的数据类型

时间:2018-08-22 11:21:21

标签: android kotlin

我是Kotlin的新手。我确实搜索并阅读了文档,但无法弄清楚在Kotlin中使用哪种最佳数据类型作为货币。在Java中,有BigDecimal。 Kotlin有类似的东西吗?预先感谢。

3 个答案:

答案 0 :(得分:1)

您可以在Kotlin中使用BigDecimal,请参见下面的变量

var currency: BigDecimal? = BigDecimal.ZERO

答案 1 :(得分:1)

您也可以在Kotlin中使用 BigDecimal

var num1 : BigDecimal? = BigDecimal.ZERO

var num2  = BigDecimal("67.9") 

还可以使用Double数据类型,然后可以使用 toBigDecimal()将其转换为BigDecimal。

有关更多详细信息:-https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/to-big-decimal.html

答案 2 :(得分:0)

如果您以JVM为目标,那么您也可以在Kotlin中使用BigDecimal(正如其他答案所说的那样)—实际上,Java可用的任何也可以在Kotlin中使用!并且通常以更简洁自然的方式。

例如:

val a = BigDecimal("1.2")
val b = BigDecimal("3.4")

println("Sum = ${a + b}")
println("Product = ${a * b}")
val c = a / -b

这可能是目前存储货币值的标准方法。如果您需要其他功能,则可以编写一个包装BigDecimal的类,例如。一个java.util.Currency或您需要的其他任何内容。

(如果您以JS或本机代码为目标,则that may change不能使用BigDecimal。)

使用浮点数或双精度数来存储货币值是not最佳实践的原因是,它们不能完全存储十进制值(因为它们使用浮点二进制数),因此仅在效率(存储/计算)比精度更重要。

如果您永远不会处理一分钱/分/&c的小数,那么另一种选择可能是存储整数个便士。这样做可能更有效,但并不经常使用。

(您会注意到上面的示例从Strings创建BigDecimals。通常是一个好主意;如果从float或Doubles创建它们,则该值在BigDecimal看到之前已经被截断了。)