2011-03-02 43 views
1

我在我的Silverlight項目中使用IronPython作爲DLR的數學解析器:它可以工作,但是在涉及除法的情況下計算不正確的結果,因爲它有時使用整數而不是浮點數學(所以4/3返回1)。谷歌建議將from __future__ import division添加到python腳本中,但是當我嘗試運行它時會引發異常。Ironpython和未來的陳述

在IronPython中是否支持__future__語句?我能做些什麼來使他們工作?

回答

2

您必須確保__future__.py可用於導入。不過,我不確定如何爲Silverlight做到這一點。

+0

只需添加'__future __ py'文件在Silverlight應用程序文件夾中的其他python文件旁邊。 – 2011-03-02 21:30:26

1

再說什麼傑夫建議,也可以設置在發動機

var engineOptions = new Dictionary<string, object>(); 
engineOptions["DivisionOptions"] = PythonDivisionOptions.New; 
var engine = Python.CreateEngine(engineOptions); 
Console.WriteLine("{0}", engine.Execute("4/3")); 

時設置的分行爲或當您編譯腳本:

var engine = Python.CreateEngine(); 
var compilerOptions = (PythonCompilerOptions)engine.GetCompilerOptions(); 
compilerOptions.Module |= ModuleOptions.TrueDivision; 
var code = engine.CreateScriptSourceFromString("4/3").Compile(compilerOptions); 
Console.WriteLine("{0}", code.Execute()); 
+0

太棒了,第一種方法正是我所需要的,而不是設置搜索路徑,這在服務器環境中有點棘手。謝謝! – 2016-02-10 13:56:16