为什么我在使用rand时得到0?我的值是小数位

时间:2012-09-11 04:52:20

标签: php

$value = rand(0.1, 0.3);

然后输出返回0

任何可以解决此问题的答案?

我已经尝试过使用

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

我仍然得到0

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

问题

The documentation说明了一切:

  

rand - 生成随机整数

因为您要传递浮动广告(0.10.3),所以它们会转换为int,结果与此完全相同:

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