5

我使用以下方法随机生成一个小数:

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

它会出现类似 1.34235346435 的内容。

我怎样才能将其转换为 1.3。

4

4 回答 4

14

您可以像这样四舍五入到小数点后一位;

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

改用它 return 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 回答