想象一下由于浮点不准确而充满错误的代码库。我们假设重构或重写代码不是一种选择。替换PHP的浮点数据类型
当然,PHP提供GMP和/或BC更高的精度。然而,考虑到上述限制,实施它们将证明是不可能完成的任务。
有没有一种方法(可能通过PHP模块或核心补丁)将PHP浮点类型完全替换为更精确的东西?当然会有性能损失,但这是考虑到的。
它存在吗?如果没有,我写一个想法有多糟糕? ;)
想象一下由于浮点不准确而充满错误的代码库。我们假设重构或重写代码不是一种选择。替换PHP的浮点数据类型
当然,PHP提供GMP和/或BC更高的精度。然而,考虑到上述限制,实施它们将证明是不可能完成的任务。
有没有一种方法(可能通过PHP模块或核心补丁)将PHP浮点类型完全替换为更精确的东西?当然会有性能损失,但这是考虑到的。
它存在吗?如果没有,我写一个想法有多糟糕? ;)
你可能会考虑使用SPL Types,它提供了标量PHP数据类型的OO包装。然后,您可以扩展SplFloat以用您想要的任何内容替换内部表示。
当然,你还不得不修改你的代码,而不是使用本地标浮
有趣...所以我可以基本上做这个操作符重载,并与BC数学实现这些操作。它仍然需要对代码库进行更改,但sed可以为我节省很多麻烦......我现在将其标记为已接受。 – 2013-02-22 20:11:19
如果你对半点感兴趣,我会尝试用自定义类和运算符重载http://pecl.php.net/package/operator – 2013-02-22 20:43:54
我的运气这不是我自己做的事情, d有兴趣知道它是如何运作的,如果你想在这里发布一个后续的话 – 2013-02-22 21:45:54
它不限于PHP SplFloat每一个浮动分配。你如何准确地将'1/3'表示为浮动? – 2013-02-22 19:38:08
@WesleyMurch:就是这样......程序可以整天把它称为一个浮点数,我希望计算机(在这种情况下是PHP)将它抽象为任何提供更高精度的东西。 – 2013-02-22 19:39:58
我只能说是最好的。 – 2013-02-22 19:40:57