Csharp/C#教程:C#/ IronPython Interop和“float”数据类型分享


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#有两种浮点类型: floatSystem.Single MSDN的缩写,32位长的关键字)和doubleSystem.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

(0)
上一篇 2021年12月28日
下一篇 2021年12月28日

精彩推荐