$value = rand(0.1, 0.3);
然后输出返回 0
有什么可以解决这个问题的答案吗?
我已经尝试使用
$value = 0.01*rand(1, 3);
我仍然得到 0
$value = rand(0.1, 0.3);
然后输出返回 0
有什么可以解决这个问题的答案吗?
我已经尝试使用
$value = 0.01*rand(1, 3);
我仍然得到 0
函数 rand(); 只接受整数而不接受浮点数值。
文档说明了一切:
rand
— 生成一个随机整数
因为您正在传递浮点数(0.1
和0.3
),所以它们被转换为int
s,结果完全是这样的:
rand(0, 0)
转换证明:http: //ideone.com/osg97
基于上述,唯一的结果可能是从rand(0.1, 0.3)
是0
(零)。要获得其他东西,请以整数为基础。
解决方法很简单,用整数计算即可。如果您想要满足您需要的功能,您可以使用此代码($places
是您想要在积分部分之后计算的位数):
function float_rand($start, $end, $places){
$multiplier = pow(10, $places);
return rand($start * $multiplier, $end * $multiplier) / $multiplier;
}
证明:http: //ideone.com/lfUhx