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.1float(および)を渡すため、floatはs0.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

于 2012-09-11T04:59:57.423 に答える