.NET Decimal,IEEE Decimal ....关于那个和未来的任何讨论等等?

时间:2014-03-03 08:28:19

标签: .net ieee-754

请注意,我不是在寻找基于意见或某些第三方图书馆的东西 - 我只想确认没有任何计划(或指向权力的某些讨论)。我试过谷歌并没有找到任何东西,所以看起来我正朝着“使用英特尔库在C ++ / CLI中编写我自己的实现”。)

与许多人一样,我正在处理财务数据,这意味着花车存在极大的问题。同时,.NET十进制是一个野兽 - 慢但也很大(128位大)这使得当你积累成千上万的它们并希望它们在一个包含更多信息的结构中时使用它是低效的。

IEEE 754定义了3种十进制类型,它们可能在主流处理器的硬件中得到支持(例如,它们已经具有较少的通用功能,例如Power系列),支持32位,64位和128位。有一个优化的英特尔库可以进行十进制数学运算,很可能在某一点上至少有更简单的数学将用于硬件。

我所能找到的只是Annotated C#Standard中关于.NET十进制和IEEE当时提出的标准之间的互操作的古老讨论,并且它被拒绝但是以某种方式可以确定一个位域是否是.NET十进制或有点投影的IEEE十进制128。

从那时起,许多年过去了。现在IEEE 754:2008已经完成 - 我想知道是否有任何关于如何继续发布的官方文章。正如我所说的那样,.NET十进制数字很慢,并且没有机会获得硬件加速 - 而且我的表现非常大。

那么,任何人都知道博客中的任何内容或其他内容?注意 - 它必须是官方的或指的,我不是来自与.NET语言或BCL团队无关的人的意见。这是关于规范资源,是否将来考虑其他数据类型......可能是针对.NET 5.0 / 6.0时间帧。

2 个答案:

答案 0 :(得分:2)

我编写了财务软件并完全理解为什么简单的整数是不够的。

证明消极是非常困难的,但这里有:

http://social.msdn.microsoft.com/forums/vstudio/en-US/48c698db-d602-4f83-92bb-1c0506d58a78/ieee754 简而言之,如果语言不需要它,.NET就不在乎了。

找到需要它的语言: 看起来DietmarKühl试图在c中添加小数但未能及时提交: C++ decimal data types

尽管IEEE仍在对小数进行大量工作。试试这些谷歌搜索:     

     Decimal site:ieee.org and limit it to the last month.
     Decimal Draft site:ieee.org and limit it to the last year.    

如果它在硬件中,软件最终将拥有它。程序集将允许您执行硬件可以执行的任何操作,但如果您遇到不了解新操作代码的虚拟机,我不确定您可以做什么,只能模拟。

所以现在我看到的不仅仅是你。遗憾。

哦,你可以从我这里告诉supercat,整数上的(a + b)+ c = a +(b + c)不再是浮点上的保证。位也可以从非无限大小的整数的左端掉落。如果您先添加它,'a'可能是否定的并且可以使您免于溢出。

答案 1 :(得分:0)

我不了解微软的计划(如果有的话)。

但是,您可以在

处查看有关十进制算术的Mike Colishaw's页面

你可以得到他的十进制算术规范(IEEE 754十进制浮点数的基础),以及C语言参考实现,测试用例等:

编译一下,p /从你编写的C#十进制浮点结构调用那些函数,你应该好好去。

清除。与其他代码的互操作性可能会有问题。