gpt4 book ai didi

java - Kotlin String toDouble() 函数不解析某些值?

转载 作者:行者123 更新时间:2023-12-01 19:30:30 26 4
gpt4 key购买 nike

为什么我的十进制字符串值没有转换?!当使用 java.lang.Double.parseDouble 时,给出 NumberFormatException 的值工作得很好,但不建议在 Kotlin 中使用 java Double

Image of results from using toDouble()

double 值是“39.05166667”

最佳答案

您的字符串具有 Unicode u+FEFF byte order mark开头的字符,定义为“Zero width no-break space ”。它甚至没有定义为空白,因此 trim() 不会删除它!

我发现即使使用java.lang.Double.parseDouble,它也会失败。也许当你检查这个时,你无意中重新输入了字符串的有问题的部分。

您可以通过记录字符串的长度并观察它是否比预期长来进行检查。

我不知道你是如何将此字符放入字符串中的(也许是从某些 HTML 中复制它?),但你应该能够编写一个函数来修剪它以安全地解析它:

fun String.fullTrim() = trim().replace("\uFEFF", "")

val number = "39.05166667".fullTrim().toDouble()

关于java - Kotlin String toDouble() 函数不解析某些值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59862042/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com