输入文本是否改变整数? AS3

时间:2016-09-21 03:21:39

标签: actionscript-3 actionscript

我正在制作Collat​​z猜想的小型AS3功能。 这是代码:

import flash.events.Event;
import flash.events.MouseEvent;

var numb:int=0
var amount:int=0
button.addEventListener(MouseEvent.CLICK, buttonclick)
function buttonclick(buttonclicked:MouseEvent):void{
    numb=int(input.text)
    trace(numb)
    amount=0
}
stage.addEventListener(Event.ENTER_FRAME, equate)
function equate(equate:Event):void{
    dynam.text=amount.toString() + "\n" + numb.toString();;
    if(numb !=0 && numb !=1){
        if(numb % 2 == 0){
            numb=numb/2
            amount+=1
        }
        else{
            numb=numb*3+1
            amount+=1
        }
    }
}

但是,有时textinput变为负数。

123123123123变成-1430928461

12312312312321312变成-1715645152

等等。

我不知道为什么,但我认为这与

有关
numb=int(input.text)

但我不想做绝对值,因为这个等式会产生错误的结果。 如果你想让它停在负数上(并自己测试),请执行以下操作:

if(numb !=0 && numb !=1 && numb>1)

而不是

if(numb !=0 && numb !=1)

1 个答案:

答案 0 :(得分:4)

  

12312312312321312变成-1715645152

该数字位数不适合integer数据类型。将每个 int 替换为Number并再次测试。

即:var numb:Number=0;var amount:Number=0;以及numb=Number(input.text);