as3中的小数到小数点后一位?

时间:2012-07-13 11:10:07

标签: actionscript-3

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

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

它的出现类似于1.34235346435。

如何将其转换为1.3。

4 个答案:

答案 0 :(得分:13)

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

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

答案 1 :(得分:4)

只需使用.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

答案 2 :(得分: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

答案 3 :(得分:-1)

请改用它 返回Math.Round((Math.random()*(max - min)+ min),1);

,1将向上舍入到1个地方

你可以使用2位小数 返回Math.Round((Math.random()*(max - min)+ min),2);

我希望现在有所帮助。