C#/ IronPython Interop和“float”数据类型
使用一些IronPython脚本作为插件的项目,使用C#编码的function。 在我的一个C#类中,我有一个类型为的属性:
Dictionary
我从IronPython代码中设置了该属性的值,如下所示:
mc = MyClass() mc.ValueDictionary = Dictionary[int, float]({1:0.0, 2:0.012, 3:0.024})
但是,当运行这段代码时,它会抛出以下exception:
Microsoft.Scripting.ArgumentTypeException was unhandled by user code Message=expected Dictionary[int, Single], got Dictionary[int, float]
为了使事情变得更奇怪,最初使用的是C#代码
Dictionary
但是我在IronPython中找不到“双”类型,一想到就“浮动”并且工作正常,没有错误。 但是现在它在两端使用float(应该从一开始就使用它)它会出错,并且认为C#代码使用的是“Single”数据类型?!
我甚至在对象浏览器中检查了C#库,当然,它显示为使用“float”类型而不是“Single”
我真的没有在这里看到一个问题,你自己也非常回答了一切。 我想你只是在问,因为你很困惑。 所以让我们清楚一点:
C#有两种浮点类型: float
( System.Single
MSDN的缩写,32位长的关键字)和double
( System.Double
MSDN的关键字,64位长)。
另一方面,Python使用float
关键字/类型来存储双精度浮点数,如python文档所述:
浮点数在C中使用double实现。除非您碰巧知道正在使用的机器,否则所有关于其精度的投注都将关闭。
为此,在x86架构上,它是64位长。 这就是IronPython将python float
视为.NET System.Double
。
也就是说,这两种方法都有效:
C#:
Dictionary single_precision_dict; Dictionary double_precision_dict;
IronPython的:
上述就是C#学习教程:C#/ IronPython Interop和“float”数据类型分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
single_precision_dict = Dictionary[int, Single]({1:0.0, 2:0.012, 3:0.024}) double_precision_dict = Dictionary[int, float]({1:0.0, 2:0.012, 3:0.024})
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1003454.html