2016-11-30 60 views
1

這就是我想要的:如何在javascript中聲明一個unsigned int變量?

>> var uint n = 0; 
<- undefined (output by firefox dev console, I don't know what this means) 
>> n; 
<- 0; 
>> n - 1; 
<- 4294967295 (2^32-1) 

那麼如何來聲明一個變量,在JavaScript中,所以它是無符號? 在此先感謝。

+0

有在Javascript中沒有內置的無符號整數類型。我想你可以使用一個類型化的ArrayBuffer(Uint32Array)。 – Thilo

回答

1

如果你真的需要他們unsigned然後檢查Uint32Array on MDN

但是,既然你沒有真正從你的值被無符號獲得任何東西,也許簡單的模數運算會更好?

//Create var as array of length 1 
 
var arr = new Uint32Array(1); 
 
//set first value to 1 
 
arr[0] = 1; 
 
//output contents 
 
console.log(arr); 
 
//substract to "negative" 
 
arr[0] -= 2; 
 
//output contents 
 
console.log(arr);

//Object with setter, to make it simpler 
 
var my_obj = Object.create({ 
 
    //This is our value 
 
    value: 0 
 
}, { 
 
    //This is our setter 
 
    set: { 
 
    value: function(a) { 
 
     //Make incoming value a modulus of some integer 
 
     //I just use 1000 for the example 
 
     var max = 1000; 
 
     a = a % max; 
 
     //Force a positive 
 
     while (a < 0) { 
 
     a += max; 
 
     } 
 
     //Set value 
 
     this.value = a; 
 
     //Return object regerence for chaining 
 
     return this; 
 
    } 
 
    } 
 
}); 
 
console.log("0:", my_obj.value); 
 
my_obj.set(500); 
 
console.log("500:", my_obj.value); 
 
my_obj.set(-0); 
 
console.log("-0:", my_obj.value); 
 
my_obj.set(-1); 
 
console.log("-1:", my_obj.value); 
 
my_obj.set(-100); 
 
console.log("-100:", my_obj.value); 
 
my_obj.set(-0); 
 
console.log("-0:", my_obj.value);

或用一個函數:

function modulusMax(value, a) { 
 
    //Make incoming value a modulus of some integer 
 
    //I just use 1000 for the example 
 
    var max = 1000; 
 
    a = a % max; 
 
    //Force a positive 
 
    while (a < 0) { 
 
    a += max; 
 
    } 
 
    //Set value 
 
    value = a; 
 
    //Return object regerence for chaining 
 
    return value; 
 
} 
 

 
var v = 0; 
 

 
console.log("0:", modulusMax(v, 0)); 
 
console.log("500:", modulusMax(v, 500)); 
 
console.log("-0:", modulusMax(v, -0)); 
 
console.log("-1:", modulusMax(v, -1)); 
 
console.log("-100:", modulusMax(v, -100)); 
 
console.log("1100:", modulusMax(v, 1100)); 
 
console.log("-0:", modulusMax(v, -0));

+0

如何用簡單的模數運算工作?我只想要正數。 –