欧洲语言的'java.lang.NumberFormatException: Invalid double',使用 Kotlin



我为此找到的每个解决方案都使用 java 而不是 Kotlin,请问有人可以帮忙吗? 我写了一个应用程序,我只是想翻译成一些欧洲国家,但是数学部分正在下降,因为德国人、法国人等使用逗号而不是句号。我不知道如何使用这里的解决方案来解决这个问题。

.kt 文件的一部分:

import java.math.RoundingMode
import java.text.DecimalFormat
...
val df = DecimalFormat("#.##")
df.roundingMode = RoundingMode.CEILING
val lengthCalc = 0.01658
val length = df.format(lengthCalc)

任何帮助感谢

编辑:我看过这里:如何将DecimalFormat的小数分隔符从逗号更改为点/点? 但正如我最初所说,所有的解决方案都是针对 Java,而不是 Kotlin

我目前无法尝试,但类似

val otherSymbols = DecimalFormatSymbols()
otherSymbols.setDecimalSeparator(',')
otherSymbols.setGroupingSeparator('.')
DecimalFormat df = DecimalFormat("#.##", otherSymbols)
df.roundingMode = RoundingMode.CEILING
val lengthCalc = 0.01658
val length = df.format(lengthCalc)

应该做这个伎俩。您需要对欧洲使用十进制格式符号,因此小数点使用逗号,千位使用句号。

基于区域设置执行此操作的另一种方法是使用 NumberFormat 并将其转换为 DecimalFormat

val df = NumberFormat.getNumberInstance(currentLocale) as DecimalFormat
df.applyPattern("#.##")
...
df.format(lengthCalc)

最新更新