我有這樣的代碼:從String到Double的轉換不起作用?
fun main(args:Array<String>){
var value:String = "4.0*5.0"
var value_double = value.toDouble()
print(value_double)
}
我得到了一個錯誤,但我不明白爲什麼我沒有得到20.0?
我有這樣的代碼:從String到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()
"4.0*5.0"
不能被轉換到爲雙但"4.0"
可以這樣可以"5.0"
。所以,如果想要的20.0
結果,你將不得不兩個字符串轉換成單獨再乘以他們
val value_double = "4.0".toDouble() * "5.0".toDouble()
print(value_double)
從@voddan的解決方案是最好的,因爲它是靜態編程。但是,如果你出於某種原因需要評估"4.0*5.0"
,並且沒有真正的機會靜態執行它(因爲它以某種方式作爲字符串傳遞給你,並且你不知道有關內容),那麼你可以使用腳本引擎。有關詳情請參閱Dynamically evaluating templated Strings in Kotlin
但請只使用這個引擎作爲最後的手段。如果您有選擇的話,請始終選擇靜態變量,因爲它更節省。
即使是重複的,但我可以告訴你可以通過[ScriptEngine的(http://docs.oracle.com/javase/8/docs/api/javax/script/ScriptEngine做簡單的Java中的數學表達式html的),例如:。EVAL'VAL結果= ScriptEngineManager()getEngineByName所( 「犀牛」)( 「4.0×5.0」)作爲Double' –
我不建議你使用'KotlinScriptEngine'現在,因爲它是非常**緩慢**和**浪費**許多資源。也許未來它可能會更快。 –