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