可能的重复:
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);
结果是:
也许我没有看到全貌,但是如果世界另一端的程序员向我发送他的脚本文件,我(和他)希望结果是一致的!(让我们暂时忽略有问题的 base 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);
结果 :
我如何相信脚本会产生相同的预期结果?(或者我把整个情况弄错了......?)