2017-07-16 20 views
-2

私はこのコードを持っている:StringからDoubleへの変換はどうしたらいいですか?

fun main(args:Array<String>){ 

var value:String = "4.0*5.0" 
var value_double = value.toDouble() 
print(value_double) 

} 

私はエラーを得たが、私は20.0を取得しない理由を私は理解していませんか?

+0

でも重複していますが、[ScriptEngine](http://docs.oracle.com/javase/8/docs/api/javax/script/ScriptEngine)で数式をJavaで簡単に行うことができます'valet = ScriptEngineManager()。getEngineByName(" nashorn ")。eval(" 4.0 * 5.0 ")をDoubleとして返します。 –

+0

今は' KotlinScriptEngine'を使用することをお勧めしません。非常に**ゆっくり**そして**多くのリソースを無駄にする**。将来的にはもっと速くなるかもしれない。 –

答えて

4

String.toDouble()は、乗算やその他の算術演算をサポートしていません。実際、それは倍精度解析以外の何かをサポートしていません。

したがって、20.0を取得する唯一の方法は、数字を別々に解析してから操作を行うことです。

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

"4.0*5.0"は、二重にに変換することはできませんが、"4.0"ので"5.0"ができますすることができます。 20.0の結果を望むのであれば、あなたは

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

それが静的にプログラムされているので、@voddanからソリューションは、好適であるそれらを掛け、個別にして、両方の文字列を変換する必要があります。しかし何らかの理由で"4.0*5.0"を評価して静的に行う必要がない場合(何らかの理由で文字列として渡され、内容についてわからないため)、スクリプトエンジンを使用するよりも。詳細はDynamically evaluating templated Strings in Kotlin

ですが、最後の手段としてこのエンジンを使用してください。あなたが選択肢を持っている場合は、それがより安全であるため、常に静的バリアントを優先します。

関連する問題