java - '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)
推荐阅读
- angular - 在角度 9 中检查后,表达式发生了变化
- sql - 我应该总是更喜欢 EXISTS 而不是 SQL 中的 COUNT() > 0 吗?
- javascript - 如何使用 jQuery 或 JavaScript 将数据对象传递给引导模型
- python - Python MySQL根据其主键顺序将新行插入现有表
- javascript - Alpine.js 如何绑定到名称中带有点的 DOM 事件
- react-native - ITMS-90038:格式错误的 InfoPlist.strings 文件:'${filePath}' 使用 expo 发布应用程序时
- botframework - 如何在管道中安装 Microsoft Bot Framework 工具然后使用
- websocket - 为 HTTP/2 代理实现 websocket 支持
- javascript - 如果我有参考 Firestore 更新文档?
- python - python中的多维非线性优化