2013-02-22 94 views
1

想象一下由于浮点不准确而充满错误的代码库。我们假设重构或重写代码不是一种选择。替换PHP的浮点数据类型

当然,PHP提供GMP和/或BC更高的精度。然而,考虑到上述限制,实施它们将证明是不可能完成的任务。

有没有一种方法(可能通过PHP模块或核心补丁)将PHP浮点类型完全替换为更精确的东西?当然会有性能损失,但这是考虑到的。

它存在吗?如果没有,我写一个想法有多糟糕? ;)

+0

它不限于PHP SplFloat每一个浮动分配。你如何准确地将'1/3'表示为浮动? – 2013-02-22 19:38:08

+0

@WesleyMurch:就是这样......程序可以整天把它称为一个浮点数,我希望计算机(在这种情况下是PHP)将它抽象为任何提供更高精度的东西。 – 2013-02-22 19:39:58

+1

我只能说是最好的。 – 2013-02-22 19:40:57

回答

2

你可能会考虑使用SPL Types,它提供了标量PHP数据类型的OO包装。然后,您可以扩展SplFloat以用您想要的任何内容替换内部表示。

当然,你还不得不修改你的代码,而不是使用本地标浮

+0

有趣...所以我可以基本上做这个操作符重载,并与BC数学实现这些操作。它仍然需要对代码库进行更改,但sed可以为我节省很多麻烦......我现在将其标记为已接受。 – 2013-02-22 20:11:19

+0

如果你对半点感兴趣,我会尝试用自定义类和运算符重载http://pecl.php.net/package/operator – 2013-02-22 20:43:54

+0

我的运气这不是我自己做的事情, d有兴趣知道它是如何运作的,如果你想在这里发布一个后续的话 – 2013-02-22 21:45:54