1
$value = rand(0.1, 0.3);

然后输出返回 0

有什么可以解决这个问题的答案吗?

我已经尝试使用

$value = 0.01*rand(1, 3);

我仍然得到 0

4

2 回答 2

3

函数 rand(); 只接受整数而不接受浮点数值。

于 2012-09-11T04:58:17.050 回答
0

问题

文档说明了一切:

rand— 生成一个随机整数

因为您正在传递浮点数(0.10.3),所以它们被转换为ints,结果完全是这样的:

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

于 2012-09-11T04:59:57.423 回答