5

私はランダムに以下を使用して小数を生成します:

private function randomNumber(min:Number, max:Number):Number
    {
        return Math.random() * (max - min) + min;
    }

1.34235346435のようなものが出てきます。

1.3になるように変換するにはどうすればよいですか。

4

4 に答える 4

14

このように小数点以下第1位に四捨五入できます。

var newValue:Number = Math.round(oldValue * 10)/10

または、次のような任意の小数点以下の桁数:

function round2(num:Number, decimals:int):Number
{
    var m:int = Math.pow(10, decimals);
    return Math.round(num * m) / m;
}
trace(round2(1.3231321321, 3)); //1.323
于 2012-07-13T11:19:20.617 に答える
5

.toFixedまたは.toPrecisionメソッドを使用するだけで、複雑にする必要はありません(数値は文字列になるため、そのような数値に割り当てるか、元に戻す必要があります)。

例えば。

    var numb:Number = 4.3265891;
    var newnumb;

    newnumb=numb.toFixed(2);//rounds to two decimal places, can be any number up to 20
    trace(newnumb);//traces 4.33

    newnumb=numb.toPrecision(3);//the 3 means round to the first 3 numbers, can be any number from 1 to 20
    trace(newnumb);//traces 4.33
于 2014-03-07T16:01:47.507 に答える
2

結果とパフォーマンスとしてNumberが必要な場合、このソリューションはMath.pow()/ Math.round()ソリューションよりも効率的だと思います。小数点以下3桁が必要な場合は、100を1000ずつ変更してください。

var myNumber:Number = 3.553366582;
myNumber = (( myNumber * 100 + 0.5)  >> 0) / 100;
//trace = 3.55

丸めのデモンストレーション:

var myNumber:Number = 3.557366582;
myNumber = (( myNumber * 100 + 0.5)  >> 0) / 100;
//trace = 3.56
于 2014-01-22T21:36:32.773 に答える
-1

代わりにこれを使用して、Math.Round((Math.random()*(max --min)+ min)、1);を返します。

、1は1か所まで切り上げます

小数点以下2桁の場合、return Math.Round((Math.random()*(max --min)+ min)、2);を使用できます。

これが今お役に立てば幸いです。

于 2012-07-13T11:12:21.347 に答える