重複の可能性:
JavaScript の数学は壊れていますか?
Python コードを動的に実行する単純な C# コードをいくつか作成しました (既に実装されています)。
string code = @"100 * 2 + 4 / 3";
ScriptEngine engine = Python.CreateEngine();
ScriptSource source = engine.CreateScriptSourceFromString(code, SourceCodeKind.Expression);
int res = source.Execute<int>();
Console.WriteLine(res);
次に、Javascript について考えてみました。C# と JS には根本的な違いがあると思いました。例えば:
JS で:
var t=1.02+1.01 = 2.0300000000000002;
そして、私はJint経由でこれを試しました:
var script = @"
function add( ) {
return 1.02 + 1.01;
};
return add();";
var result = new JintEngine().Run(script);
Console.WriteLine(result);
結果は次のとおりです。
全体像が見えていないかもしれませんが、地球の反対側にいるプログラマーからスクリプト ファイルが送られてきたら、私 (および彼) は結果が一貫していることを期待しています! (問題のある基数 2 表現は今のところ無視しましょう。一貫性について話しているのです)。
私が間違っていたとしたら、どのようなシナリオで .Net で他のコードを実行するのでしょうか? (コードのすべての行について非常に疑わしくする必要があります...)
私は正しいですか?
もう一つの例 :
var script = @"
function show( )
{
return parseInt('123asd'); //in js it's 123
};
return show();";
var result = new JintEngine().Run(script);
Console.WriteLine(result);
結果 :
スクリプトが同じ期待される結果をもたらすことをどのように信頼できますか? (または、この状況全体が間違っているのでしょうか...?)