【问题标题】:override type choosing or compare two floats in php覆盖类型选择或比较 php 中的两个浮点数
【发布时间】:2010-11-05 19:28:30
【问题描述】:

所以基本上,我从不同的资源(外部资源和数据库)获得了两个非常大的 ID,我需要以某种方式比较它们。如果它们匹配,我需要中断操作。

看起来很简单,但 PHP 正在将它们转换为浮点数(看起来像 6.2983963148698E+14),然后它们似乎永远不会匹配。

我该怎么办?我尝试在 PHP 中搜索某种类型的大整数,或者将它们转换为字符串。那没用。

请记住,我对此并没有真正的经验。

感谢您的帮助。

【问题讨论】:

    标签: php comparison compare


    【解决方案1】:

    【讨论】:

    • 我不想破坏你666的声誉,但是+1
    • 这是一些非常棒的功能,但我似乎无法让 bccomp 为我工作。它总是说,左操作数更大,而事实上,它应该是相反的。例如:651555829190656 大于 650384343310340,但当 ID 转换为科学浮点数时,bccomp 告诉我相反。必须有更好的方法来比较这些 ID。不是吗?
    • @donkapone 确保将这些数字作为字符串而不是整数传递给函数,即if (bccomp("651555829190656", "650384343310340")) {...} 必要时使用强制转换,即if (bccomp((string) $n, (string) $m)) {...} 在 PHP 中处理大整数比你想象的要困难得多想象一下当数字变大时——你运行的操作系统/硬件变得很重要。请参阅这篇文章 (mysqlperformanceblog.com/2007/03/27/…) 了解更多信息。
    猜你喜欢
    • 2011-08-24
    • 2015-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    相关资源
    最近更新 更多