如何从字符串转换为Double不起作用?

我有这个代码:

fun main(args:Array<String>){ 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中的模板化字符串

但是请只使用这个引擎作为最后的手段。 如果您有选择的话,请始终选择静态变量,因为这样可以节省时间。

"4.0*5.0"不能转换为双精度,而"4.0"可以精确到"5.0" 。 所以如果想得到20.0的结果,你将不得不单独转换两个字符串,然后将它们相乘

  val value_double = "4.0".toDouble() * "5.0".toDouble() print(value_double)