我是Kotlin的新手。我确实搜索并阅读了文档,但无法弄清楚在Kotlin中使用哪种最佳数据类型作为货币。在Java中,有BigDecimal。 Kotlin有类似的东西吗?预先感谢。
答案 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看到之前已经被截断了。)>