直接上代码:
-
// /**
-
// *产生随机小数的函数
-
// */
-
function randomFloat($min, $max) {
-
return $min + mt_rand() / mt_getrandmax() * ($max - $min);
-
}
-
// /**
-
// *获取指定位数的小数
-
// */
-
$num=randomFloat(1,8);
-
// echo $num;
-
$newNum = sprintf("%.2f",$num);
-
echo $newNum;
如上,用sprintf函数取得的并不是浮点数类型,而是字符型 string 。
改进:将sprintf()函数改为 round($num,2); 就可以取得浮点型的结果啦!
下面是我自己的:
private function randomFloat($min = 0, $max = 1) {
$str = $min ? (string) $min : (string) $max;
$decimalCount = explode('.', $str);
$decimalCount = strlen($decimalCount[1]);
$t = $min + mt_rand() / mt_getrandmax() * ($max - $min);
return doubleval(sprintf("%.{$decimalCount}f", $t));
}