引用ECMAScript规范5.2节:



因此,如果y为正,则x的模y的结果k为正,而与x的符号无关。

如果我的理解正确,那么ToInt32(-1)等于ToInt32(1)?

最佳答案

modulo操作定义为数学模运算:



你的问题:



好吧,没有:


posInt = sign(-1) * floor(abs(-1)) = -1;


int32bit = posInt mod 4294967296 = -1 mod 4294967296 = 4294967295

(wolfram alpha link for mathematical result)



因为是4294967295 >= 2147483648,所以我们返回4294967295 - 4294967296,即-1

如果对ToInt32(1)运行相同的步骤,则会得到1。所以他们没有相同的结果。

09-05 22:42