我需要幫助。我想製作一個數字四捨五入的按鈕,小數點後面的小數點,例如1.2345到1.234到1.23等。我不想使用Math.round,因爲它會輪到一個整數,我不知道我是否可以使用* 10/10,* 100/100等等,因爲我在答案中得到了不同的小數。點擊btnEquals
後,此按鈕將不得不在計算器上工作,只是回答問題。as3 - 按十進制整數十進制數的按鈕
我還需要幫助將addEventListener
用於「List」組件中的標籤。
我需要幫助。我想製作一個數字四捨五入的按鈕,小數點後面的小數點,例如1.2345到1.234到1.23等。我不想使用Math.round,因爲它會輪到一個整數,我不知道我是否可以使用* 10/10,* 100/100等等,因爲我在答案中得到了不同的小數。點擊btnEquals
後,此按鈕將不得不在計算器上工作,只是回答問題。as3 - 按十進制整數十進制數的按鈕
我還需要幫助將addEventListener
用於「List」組件中的標籤。
我不知道如果我很好理解的問題,但在你的情況我會做這樣的事情:
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);
輸出:
decimals = 10000
對於數學計算。地板:
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++
}
}
那如果一定更好!您關於 「表演」 的事情......
真的太長,DR;)
[編輯]
要更新文本字段或結果的另一個組件,你可以這樣做:
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;
}
}
[/編輯]
所以每次單擊該按鈕時,你希望它圓多一個地方? –
同時檢查'yourNumber.toPrecision(x);'是否做你想要的......其中'x'是小數點後所需數字的數量。 –
@NealDavis是的,這就是我的意思 –