在PHP中确定$x是否可以均匀分配$y

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了在PHP中确定$x是否可以均匀分配$y脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我只想知道$x是否可以被$y整除.例如,假设:
$x = 70;
$y = .1;

我尝试的第一件事是:

$x % $y

这两个数字都是整数,但是如果它们不是,则失败,如果$y是小于1的小数,则返回“除零”错误,那么我尝试:

fmod($x,$y)

这返回同样令人困惑的结果,“0.099999999999996”.

PHP.net声明fmod():

根据我的计算器70 / .1 = 700.这意味着余数是0.有人可以解释我做错了什么吗?

一个解决方案是进行正常划分,然后将该值与下一个整数进行比较.如果结果是整数或非常接近该整数,则结果是均匀可分的:
$x = 70;
$y = .1;

$evenlyDivisable = abs(($x / $y) - round($x / $y,0)) < 0.0001;

这样减去数字并检查绝对差值是否小于某个舍入误差.这是比较浮点数的通常方法,具体取决于您如何获得浮点数,表示可能会有所不同:

PHP> 0.1 + 0.1 + 0.1 == 0.3
bool(false)
PHP> serialize(.3)
'd:0.29999999999999999;'
PHP> serialize(0.1 + 0.1 + 0.1)
'd:0.30000000000000004;'

看这个演示:

PHP> $x = 10;
int(10)
PHP> $y = .1;
double(0.1)
PHP> abs(($x / $y) - round($x / $y,0)) < 0.0001;
bool(true)
PHP> $y = .15;
double(0.15)
PHP> abs(($x / $y) - round($x / $y,0)) < 0.0001;
bool(false)

脚本宝典总结

以上是脚本宝典为你收集整理的在PHP中确定$x是否可以均匀分配$y全部内容,希望文章能够帮你解决在PHP中确定$x是否可以均匀分配$y所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。