Flash 如何在ActionScript 3.0中获取数字的符号?
我有一个数字类型的变量,我喜欢得到符号(如果是“-”,我喜欢-1,如果“+”我喜欢1)。所以,我做了这个: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
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; 谢谢你的回答