PHP ceil 计算的结果与手动计算的结果不同

PHP ceil calculation differs in result from manually calculated result

提问人:prokops 提问时间:12/26/2022 更新时间:12/26/2022 访问量:54

问:

我有这个脚本:

function round_price_with_limits( $price = null, $multiplier = 9.3, $nearest = 10, $minus = 0.05, $map = 9.95, $msrp = 9999999999) {

    // Ensure a price was provided.
    if ( !empty( $price ) ) {

        // Calculate price with markup and round it.
        $rounded_price = ( ceil ( ( $price * $multiplier ) / $nearest ) * $nearest ) - $minus; 

        // If price is less than minimum, return minimum.
        if($rounded_price < $map){

            return $map;

        }
        // If price is greater than maximum, return maximum.
        elseif($rounded_price > $msrp){

            return $msrp;

        } else {

            // Return price otherwise.
            return $rounded_price;

        }

    }
}

它适用于几乎所有产品,除了$price值 = 1,76 的产品。 运行脚本时的最终结果为 9.95 手工计算时,结果是19.95 你能发现为什么通过 php 计算不同吗?

PHP 的CEIL

评论

1赞 KIKO Software 12/26/2022
我假设你的意思是,而不是完全不同。在编程中,我们总是使用点。我还有另一个问题:我无法重现你的发现。请参见:3v4l.org/6bPr71.761,76
0赞 Peter 12/26/2022
传球确实会产生 OP 的结果,所以这可能是问题所在。"1,76"
0赞 Bhavik 12/26/2022
如何使用值 1,76 手动计算。此外,当您传递“1,76”时,您的计算中只需要 1,丢弃逗号后的所有数字,因为整数中没有逗号。它应该是“1.76”,它将提供您想要的输出
0赞 nice_dev 12/26/2022
@prokops 不要问问题并离线。始终分享一个在线小提琴链接,显示一个最小的、可重复的例子,并徘徊一会儿。
0赞 prokops 12/27/2022
我感谢所有的答案。当我在深夜提出这个问题时,我没有闲逛,我和孩子们一个人呆得很累。我希望有人能发表评论,这样我今天就可以继续写剧本了。我是一个php初学者,所以学习使用str_replace很有价值。对我来说,这是完美的帮助,我感谢所有人,尤其是那些花时间以友好的方式回答愚蠢问题的人。

答: 暂无答案