2016-11-08 8 views
1

これはおそらくこれまで他のどこかで答えられていることは知っていますが、私と同じ問題を抱えていた人は見つけられませんでした。私はそれの後に小数点以下2桁の乱数を生成しようとしていますが、時にはそれは最大値を出力します。Math.random()はそれよりも高くなっていますか?

((Math.random() * 4) + 1.8).toFixed(2); 

何らかの理由で、4と1.8の間の数値を生成する代わりに、例えば5.25のような値に4より高くなることがあります。私が間違っていることはありますか?すべて私には大丈夫だと私はなぜそれが動作していない理解していない。これで任意の助けいただければ幸いです:) 4で乗算

答えて

2

04間の番号を生成し、1.8を追加する1.85.8の間の乱数を行います。 1.84の間の乱数を生成するには、範囲の差を乗算する必要があります。

((Math.random() * (4 - 1.8)) + 1.8).toFixed(2); 
//    --^^^^^^^^^^-- 
+1

ありがとうございました!申し訳ありませんが、誰かの時間を無駄にしたり、これが別の質問に重複していたとしても、私の人生のためにこれを理解できませんでした。私はそれがとてもシンプルだったと信じていません! –

0

Math.random() 0と1の間の数字はそれが0.9を生成想像して生成します。次に(0.9 * 4) + 1.85.4です。問題は、あなたが4を乗じた後、これを修正するには4.上記の多くを追加しているということです、あなたは、次に

((Math.random() * (4 - 1.8)) + 1.8).toFixed(2) 

を使用することができますMath.random()0.9を生成する場合、結果はより3.78ある(0.9 * 2.2) + 1.8、少なくなります4.

0

((Math.random() * 4) + 1.8).toFixed(2);

この部分は括弧の中にあるので、最初に評価されます:あなた与え(Math.random() * 4)

を0から4までの数字を入力します。

次に、1.8を追加します。つまり、小数点以下2桁に丸められた結果が1.8から5.8になります。

これは、なぜこれが機能していないのか、あなたの解決策をすぐに導き出すことができるかという質問に答えてくれることを願っています。

関連する問題