Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash 如何在ActionScript 3.0中获取数字的符号?_Flash_Actionscript 3 - Fatal编程技术网

Flash 如何在ActionScript 3.0中获取数字的符号?

Flash 如何在ActionScript 3.0中获取数字的符号?,flash,actionscript-3,Flash,Actionscript 3,我有一个数字类型的变量,我喜欢得到符号(如果是“-”,我喜欢-1,如果“+”我喜欢1)。所以,我做了这个: var sign = Math.abs(n) / n; 但是,还有别的办法吗?比这个好吗?如果n==0,你会有麻烦。。。这个怎么样: var sign = n < 0 ? -1 : 1; var符号=n0){ 返回1; }else if(num0)?1:((num

我有一个数字类型的变量,我喜欢得到符号(如果是“-”,我喜欢-1,如果“+”我喜欢1)。所以,我做了这个:

var sign = Math.abs(n) / n;

但是,还有别的办法吗?比这个好吗?

如果n==0,你会有麻烦。。。这个怎么样:

var sign = n < 0 ? -1 : 1;
var符号=n<0-1 : 1;

您也可以这样做:

var sign = (n>=0)?1:-1;

使用被称为。

的函数,如果n为零,它将给您一个错误

暴力法:

function sign(num) {
  if(num > 0) {
    return 1;
  } else if(num < 0) {
    return -1;
  } else {
    return 0;
  }
}
函数符号(num){
如果(数值>0){
返回1;
}else if(num<0){
返回-1;
}否则{
返回0;
}
}
或者,对于那些喜欢条件运算符的人:

function sign(num) {
  return (num > 0) ? 1 : ((num < 0) ? -1 : 0);
}
函数符号(num){
返回值(num>0)?1:((num<0)?-1:0);
}

如果您的数字符合31位,则可以使用:

var sign = 1 + 2*(n >> 31);

想知道这是否更快,我会很感兴趣的

我继承的代码片段:

function getSign(number:int):int {
    var tmp:String = new String(number);
    if (tmp.indexOf(0) == '-') {
        return -1;
    }
    return 1;
}
请不要使用这个代码。这是个笑话

我用这个:

return (number < 0 && -1) || 1;
return(数字<0&&1)| 1;
//n=您的号码 //nSign=您的号码符号

nSign=Math.round(Math.sin(n)*-1)

/* sin返回一个介于-1和1之间的数字。 您必须将其四舍五入以获得非DEC编号。 该数字将与您的数字相反。把它乘以-1 */

//或者你可以这么做


Math.round(Math.sin(/n/)*-1)

dang,比我快了15秒:pdos不代表0,ergo不可用作排序比较函数,这是最明显的需要。我喜欢第二种方法,它更干净,处理n为0的可能性。0的符号是+而不是0,所以:return(num<0)-1 : 1; 谢谢你的回答