因此,我在 BeagleBone(ARM 700MHz 处理器)上运行 Ubuntu 12.04,令我惊讶的是,我发现 Math.Pow() 在该平台上返回了不正确的结果(Mono build 2.10.8.1ubuntu2.1)。
经过一番搜索,我发现这张海报表明这是一个已知问题。几乎是随随便便。我有点震惊 a) 问题一开始就出现了,b) 没有 ETA 来修复我认为核心数学库中一个非常基本的错误。
进一步搜索只找到了一些点击,并且在https://bugzilla.xamarin.com/上没有提及这一点(我计划提交错误报告)。
所以,诚然,还没有进入源代码(尽管我打算这样做),任何人都可以向我解释解决这个问题的困难,或者它是如何首先引入的?我的意思是,math.h 中的 pow() 函数按预期工作,所以 Math.Pow() 不能包装它吗?我在这里想念什么?
我想我觉得有一些关于浮点操作的东西是我不理解的基础,所以这不仅仅是一个错误报告,我想知道根本问题是什么,或者它是否只是一个大问题被忽视的问题。
编辑:此页面很好地总结了问题的根源(在 debian 中移植 armhf 的状态): http ://wiki.debian.org/ArmHardFloatTodo
Punchline:Mono 2.10 被列为不固定用于 armhf 端口,但它正在用于 mono 3.0。