【问题标题】:PHP - get closest number given a certain number?PHP - 给定某个数字,获取最接近的数字?
【发布时间】:2013-02-27 08:22:29
【问题描述】:

我正在修改 OpenCart 的产品过滤器之一,以按价格过滤产品。我所做的是获取属于某个类别的所有产品并提取它们的价格以将它们放在滑块中,但这根本不优雅或“专业”,我想编写一个适当的解决方案。

假设我有以下价格:125、270、517、1680 和 14790。我想做的(理想情况下)是获得最高的数字(在这个简短示例中为 14790),然后从中获得类似'15000',所以我可以将它划分为给定因子(如 100)并将其放入滑块中。

有 PHP 函数来做这种计算吗?

【问题讨论】:

标签: php numbers closest


【解决方案1】:

如果我理解您的问题,并且您要求四舍五入到最接近的 100,则没有特定的函数,但通过一些数学运算,您可以像这样四舍五入到最接近的 100:

$price = ceil($price / 100) * 100;

使用:

$price = ceil($price / 1000) * 1000;

将四舍五入到最接近的 1000。

【讨论】:

  • 好主意。答案非常接近,ceil 函数是确定最接近数字的关键。我跟着@sjdaws 回答,我得到了我需要的东西。非常感谢:)
【解决方案2】:

获取最大数字,然后将其四舍五入到最接近的千位?

<?php

$largest = max(125, 270, 517, 1680, 14790);

$nearest = ceil($largest / 1000) * 1000;

【讨论】:

  • 起首部分! 正是我想要的。非常感谢:)
【解决方案3】:

您可以遍历数字,边走边记住最高值。这是常见的编码实践。 (好吧,确实还有一个 max() 函数,echo max(1, 3, 5, 6, 7); // 7)

然后你可以将最大的数除以你的因数,将你得到的整数加一,然后再乘以这个因数,就可以了。

【讨论】:

    【解决方案4】:

    只要做:x=floor(14790/100); floor函数返回下一个最小的整数值

    【讨论】:

    • 嗯,这不是我想要的,但感谢您的回答:)
    猜你喜欢
    • 1970-01-01
    • 2014-07-29
    • 2012-08-21
    • 2013-03-01
    • 2012-11-17
    • 1970-01-01
    • 2018-09-28
    相关资源
    最近更新 更多