如何从字符串转换为Double不起作用?
我有这个代码:
fun main(args:Array){ var value:String = "4.0*5.0" var value_double = value.toDouble() print(value_double) }
我得到一个错误,但我不明白为什么我不得到20.0?
String.toDouble()
不支持乘法或其他算术运算。 事实上,除了解析双打之外,它不支持任何东西。
所以得到20.0
的唯一方法是分别解析数字,然后对它们进行操作。
val value_double = "4.0".toDouble() * "5.0".toDouble()
来自@voddan的解决方案是可取的,因为它是静态编程的。 但是,如果你出于某种原因需要评估"4.0*5.0"
并且没有真正的机会静态地执行这个操作(因为它是以某种方式传递给你的,并且你不知道内容)使用脚本引擎。 有关详细信息,请参阅动态评估Kotlin中的模板化字符串
但是请只使用这个引擎作为最后的手段。 如果您有选择的话,请始终选择静态variables,因为这样可以节省时间。
"4.0*5.0"
不能转换为双精度,而"4.0"
可以精确到"5.0"
。 所以如果想得到20.0
的结果,你将不得不单独转换两个字符串,然后将它们相乘
val value_double = "4.0".toDouble() * "5.0".toDouble() print(value_double)