Actionscript 3 as3-一个按十进制对数字进行四舍五入的按钮

Actionscript 3 as3-一个按十进制对数字进行四舍五入的按钮,actionscript-3,rounding,calculator,Actionscript 3,Rounding,Calculator,我需要帮助。我想做一个按钮,对一个数字进行四舍五入,一个接一个小数,比如1.2345到1.234到1.23等等。我不想用数学。四舍五入,因为这是一个整数,我不知道我是否可以用*10/10、*100/100等等,因为我的答案中有不同的小数。在我点击btnEquals并将答案四舍五入后,这个按钮必须在计算器上工作 我还需要帮助,才能在“列表”组件的标签中使用addEventListener。我不知道我是否理解这个问题,但在您的情况下,我会这样做: var myVal:Number = 1.2345

我需要帮助。我想做一个按钮,对一个数字进行四舍五入,一个接一个小数,比如1.2345到1.234到1.23等等。我不想用数学。四舍五入,因为这是一个整数,我不知道我是否可以用*10/10、*100/100等等,因为我的答案中有不同的小数。在我点击
btnEquals
并将答案四舍五入后,这个按钮必须在计算器上工作


我还需要帮助,才能在“列表”组件的标签中使用
addEventListener

我不知道我是否理解这个问题,但在您的情况下,我会这样做:

var myVal:Number = 1.2345
var vectorFloorResult:Vector.<Number>;
var vectorRoundResult:Vector.<Number>;
var decimals2String:String = myVal.toString();
var firstDecimal:uint = (decimals2String.lastIndexOf(".")+1);
var lastDecimal:uint = decimals2String.length;
var decimals: uint = (lastDecimal-firstDecimal)

var decimalsMultiply:uint = Math.pow(10,decimals);


trace ("decimals = " + decimalsMultiply)
// output : decimals = 4 

function decreseDecimals():void{
    vectorFloorResult = new Vector.<Number>()
    vectorRoundResult = new Vector.<Number>()
    for (var i:uint = decimalsMultiply; i>=10; i/=10){
        vectorFloorResult.push(Math.floor(myVal*i)/i)
        vectorRoundResult.push(Math.round(myVal*i)/i)
    }

}

decreseDecimals();

trace("floor result = " + vectorFloorResult);
trace("round result = " + vectorRoundResult);
对于Math.floor:

floor result = 1.2345,1.234,1.23,1.2
对于Math.round:

round result = 1.2345,1.235,1.23,1.2
当您单击按钮时,您可以更改代码以获得结果

对不起,我的英语真的很差! 所以这也许是一个错误的答案(

TL;DR;需要更多信息,但很无聊!

如果要使用固定向量长度,可以将函数更改为:

function decreseDecimals():void{
    var count:uint = 0
    trace(lastDecimal)
    vectorFloorResult = new Vector.<Number>(decimals,true)
    vectorRoundResult = new Vector.<Number>(decimals,true)
    for (var i:uint = decimalsMultiply; i>=10; i/=10){
        vectorFloorResult[count]=(Math.floor(myVal*i)/i)
        vectorRoundResult[count]=(Math.round(myVal*i)/i)
        count++
    }

}
函数decreseDecimals():void{
变量计数:uint=0
跟踪(最后十进制)
vectorFloorResult=新向量。(小数,真)
vectorRoundResult=新向量。(小数,真)
对于(变量i:uint=decimalsMultiply;i>=10;i/=10){
vectorFloorResult[count]=(数学楼层(myVal*i)/i)
vectorRoundResult[count]=(数学四舍五入(myVal*i)/i)
计数++
}
}
如果你喜欢“表演”,那肯定更好

真的太长了,博士;;)

[编辑]

要使用结果更新文本字段或其他组件,可以执行以下操作:

import flash.text.TextField;
import flash.display.SimpleButton;
import flash.events.MouseEvent;

var myVal:Number = 1.2345;
var vectorFloorResult:Vector.<Number > ;
var vectorRoundResult:Vector.<Number > ;
var decimals2String:String = myVal.toString();
var firstDecimal:uint = (decimals2String.lastIndexOf(".")+1);
var lastDecimal:uint = decimals2String.length;
var decimals:uint = (lastDecimal - firstDecimal);
var myCustomButton:SimpleButton = myCustomButton;
var myDisplayRound:TextField = new TextField();
myDisplayRound.x = 100;
myDisplayRound.y = 50;
myDisplayRound.text = myVal.toString();
addChild(myDisplayRound);

var myDisplayFloor:TextField = new TextField();
myDisplayFloor.x = 100;
myDisplayFloor.y = 100;
myDisplayFloor.text = myVal.toString();
addChild(myDisplayFloor);
    var countClicks:uint = 1;
var decimalsMultiply:uint = Math.pow(10,decimals);
function decreseDecimals():void {
    var count:uint = 0;
    vectorFloorResult = new Vector.<Number > (decimals,true);
    vectorRoundResult = new Vector.<Number > (decimals,true);
    for (var i:uint = decimalsMultiply; i>=10; i/=10)
    {
        vectorFloorResult[count]=(Math.floor(myVal*i)/i);
        vectorRoundResult[count]=(Math.round(myVal*i)/i);
        count++;
    }
}
decreseDecimals();
myCustomButton.addEventListener(MouseEvent.MOUSE_DOWN,changeDisplay);
function changeDisplay(me:MouseEvent):void {
    myDisplayRound.text = vectorRoundResult[countClicks].toString();
    myDisplayFloor.text = vectorFloorResult[countClicks].toString();
    if (countClicks < vectorRoundResult.length-1)
    {
        countClicks++;
    }
    else
    {
        countClicks = 0;
    }
}
导入flash.text.TextField;
导入flash.display.SimpleButton;
导入flash.events.MouseEvent;
var myVal:Number=1.2345;
var vectorFloorResult:向量;
var vectorRoundResult:Vector;
var decimals2String:String=myVal.toString();
变量firstDecimal:uint=(小数点2字符串.lastIndexOf(“.”+1);
var lastdecim:uint=decimals2String.length;
变量小数:uint=(lastDecimal-firstDecimal);
var myCustomButton:SimpleButton=myCustomButton;
var myDisplayRound:TextField=newtextfield();
myDisplayRound.x=100;
myDisplayRound.y=50;
myDisplayRound.text=myVal.toString();
addChild(myDisplayRound);
var myDisplayFloor:TextField=newtextfield();
myDisplayFloor.x=100;
myDisplayFloor.y=100;
myDisplayFloor.text=myVal.toString();
addChild(myDisplayFloor);
变量:uint=1;
var decimalsMultiply:uint=数学功率(10,小数);
函数decreseDecimals():void{
变量计数:uint=0;
vectorFloorResult=新向量(小数,真);
vectorRoundResult=新向量(小数,真);
对于(变量i:uint=decimalsMultiply;i>=10;i/=10)
{
vectorFloorResult[count]=(数学楼层(myVal*i)/i);
vectorRoundResult[count]=(数学四舍五入(myVal*i)/i);
计数++;
}
}
递减小数();
myCustomButton.addEventListener(MouseEvent.MOUSE_DOWN,changeDisplay);
功能更改显示(me:MouseeEvent):无效{
myDisplayRound.text=vectorRoundResult[countClicks].toString();
myDisplayFloor.text=vectorFloorResult[countClicks].toString();
if(countClicks

[/EDIT]

我不知道我是否理解了这个问题,但在你的情况下,我会这样做:

var myVal:Number = 1.2345
var vectorFloorResult:Vector.<Number>;
var vectorRoundResult:Vector.<Number>;
var decimals2String:String = myVal.toString();
var firstDecimal:uint = (decimals2String.lastIndexOf(".")+1);
var lastDecimal:uint = decimals2String.length;
var decimals: uint = (lastDecimal-firstDecimal)

var decimalsMultiply:uint = Math.pow(10,decimals);


trace ("decimals = " + decimalsMultiply)
// output : decimals = 4 

function decreseDecimals():void{
    vectorFloorResult = new Vector.<Number>()
    vectorRoundResult = new Vector.<Number>()
    for (var i:uint = decimalsMultiply; i>=10; i/=10){
        vectorFloorResult.push(Math.floor(myVal*i)/i)
        vectorRoundResult.push(Math.round(myVal*i)/i)
    }

}

decreseDecimals();

trace("floor result = " + vectorFloorResult);
trace("round result = " + vectorRoundResult);
对于Math.floor:

floor result = 1.2345,1.234,1.23,1.2
对于Math.round:

round result = 1.2345,1.235,1.23,1.2
当您单击按钮时,您可以更改代码以获得结果

对不起,我的英语真的很差! 所以这也许是一个错误的答案(

TL;DR;需要更多信息,但很无聊!

如果要使用固定向量长度,可以将函数更改为:

function decreseDecimals():void{
    var count:uint = 0
    trace(lastDecimal)
    vectorFloorResult = new Vector.<Number>(decimals,true)
    vectorRoundResult = new Vector.<Number>(decimals,true)
    for (var i:uint = decimalsMultiply; i>=10; i/=10){
        vectorFloorResult[count]=(Math.floor(myVal*i)/i)
        vectorRoundResult[count]=(Math.round(myVal*i)/i)
        count++
    }

}
函数decreseDecimals():void{
变量计数:uint=0
跟踪(最后十进制)
vectorFloorResult=新向量。(小数,真)
vectorRoundResult=新向量。(小数,真)
对于(变量i:uint=decimalsMultiply;i>=10;i/=10){
vectorFloorResult[count]=(数学楼层(myVal*i)/i)
vectorRoundResult[count]=(数学四舍五入(myVal*i)/i)
计数++
}
}
如果你喜欢“表演”,那肯定更好

真的太长了,博士;;)

[编辑]

要使用结果更新文本字段或其他组件,可以执行以下操作:

import flash.text.TextField;
import flash.display.SimpleButton;
import flash.events.MouseEvent;

var myVal:Number = 1.2345;
var vectorFloorResult:Vector.<Number > ;
var vectorRoundResult:Vector.<Number > ;
var decimals2String:String = myVal.toString();
var firstDecimal:uint = (decimals2String.lastIndexOf(".")+1);
var lastDecimal:uint = decimals2String.length;
var decimals:uint = (lastDecimal - firstDecimal);
var myCustomButton:SimpleButton = myCustomButton;
var myDisplayRound:TextField = new TextField();
myDisplayRound.x = 100;
myDisplayRound.y = 50;
myDisplayRound.text = myVal.toString();
addChild(myDisplayRound);

var myDisplayFloor:TextField = new TextField();
myDisplayFloor.x = 100;
myDisplayFloor.y = 100;
myDisplayFloor.text = myVal.toString();
addChild(myDisplayFloor);
    var countClicks:uint = 1;
var decimalsMultiply:uint = Math.pow(10,decimals);
function decreseDecimals():void {
    var count:uint = 0;
    vectorFloorResult = new Vector.<Number > (decimals,true);
    vectorRoundResult = new Vector.<Number > (decimals,true);
    for (var i:uint = decimalsMultiply; i>=10; i/=10)
    {
        vectorFloorResult[count]=(Math.floor(myVal*i)/i);
        vectorRoundResult[count]=(Math.round(myVal*i)/i);
        count++;
    }
}
decreseDecimals();
myCustomButton.addEventListener(MouseEvent.MOUSE_DOWN,changeDisplay);
function changeDisplay(me:MouseEvent):void {
    myDisplayRound.text = vectorRoundResult[countClicks].toString();
    myDisplayFloor.text = vectorFloorResult[countClicks].toString();
    if (countClicks < vectorRoundResult.length-1)
    {
        countClicks++;
    }
    else
    {
        countClicks = 0;
    }
}
导入flash.text.TextField;
导入flash.display.SimpleButton;
导入flash.events.MouseEvent;
var myVal:Number=1.2345;
var vectorFloorResult:向量;
var vectorRoundResult:Vector;
var decimals2String:String=myVal.toString();
变量firstDecimal:uint=(小数点2字符串.lastIndexOf(“.”+1);
var lastdecim:uint=decimals2String.length;
变量小数:uint=(lastDecimal-firstDecimal);
var myCustomButton:SimpleButton=myCustomButton;
var myDisplayRound:TextField=newtextfield();
myDisplayRound.x=100;
myDisplayRound.y=50;
myDisplayRound.text=myVal.toString();
addChild(myDisplayRound);
var myDisplayFloor:TextField=newtextfield();
myDisplayFloor.x=100;
myDisplayFloor.y=100;
myDisplayFloor.text=myVal.toString();
addChild(myDisplayFloor);
变量:uint=1;
var decimalsMultiply:uint=数学功率(10,小数);
函数decreseDecimals():void{
变量计数:uint=0;
vectorFloorResult=新向量(小数,真);
vectorRoundResult=新向量(小数,真);
对于(变量i:uint=decimalsMultiply;i>=10;i/=10)
{
vectorFloorResult[count]=(数学楼层(myVal*i)/i);
vectorRoundResult[count]=(数学四舍五入(myVal*i)/i);
计数++;
}
}
递减小数();
myCustomButton.addEventListener(MouseEvent.MOUSE_DOWN,changeDisplay);
功能更改显示(me:MouseeEvent):无效{
myDisplayRound.text=vectorRoundResult[countClicks].toString();
myDisplayFloor.text=vectorFloorResult[countClicks].toString();
if(countClicks
[/EDIT]

所以每次