图片 1

对 JS 取模的三点错误认识

相关阅读:

            大多数取模运算(mod)和求余(rem)运算都被混为一谈,因为在大多数的编程语言里,都用’%’符号表示取模或者求余运算。但是这两种的结果却不一样。

对于整型数a,b来说,取模运算或者求余运算的方法都是:1.求整数商: c =
a/b;2.计算模或者余数: r = a – c*b.求模运算和求余运算在第一步不同:
取余运算在取c的值时,向0
方向舍入;而取模运算在计算c的值时,向负无穷方向舍入函数)。例如:计算-8 %
3那么:a = -8;b = 3;第一步:求整数商c,c = a/b = -2.67
,如进行求模运算c = -3,求余c =

  • JS 中的取模
  • 对 JS 取模的三点错误认识
  • 取余赋值运算符
    (%=)

1. 取余运算在取c的值时,向0 方向舍入(fix()函数);

-2;第二步:计算模和余数的公式相同,但因c的值不同,求模时r = 1,求余时r

-2。归纳:当a和b符号一致时,求模运算和求余运算所得的c的值一致,因此结果一致。当符号不一致时,结果不一样。求模运算结果的符号和b一致,求余运算结果的符号和a一致。各个环境下%运算符的含义不同,比如c/c++,java
为取余,而python则为取模,就数学上而言,两种都是正确的。很多语言干脆提出两个函数,取余rem和取模mod。事实上,a、b异号时,a
mod b = floor = floor = floor = -3 ; a rem b = a mod b +
1;floor表示向下取整,对应的,rem也可用fix实现。

 

2. 取模运算在计算c的值时,向负无穷方向舍入(floor()函数)。

一、取模就是取整。

例如:

取模不是取整,而是取余(或余数)。

       c=a%b

图片 1

 

            其中求模运算结果的符号和b一致,求余运算结果的符号和a一致。

二、假设表达式为:result = number1 %
number2,如果 number2
不是整数,则会先将其四舍五入为整数,再进入运算。

求余:

        -3%(-5)值为余数3,符号与a一致,即为-3;

此处迷惑非常多的人,因为在微软的 JScript
语言参考里就是这么说的,实际上,并不对 number2 进行四舍五入。19 % 6.7
的结果并不是语言参考上说的为 5,而是 5.6。所以说,不会对 number2 进行四舍五入。

 取模:

        -3%(-5)值为:     -3 – floor( -3 / (-5) ) * (-5) = -3

 

fix函数:

三、取模结果的符号与乘法除法运算时的规则相同。

        当x为正时,取整函数删除x小数部分,返回其整数部分的值,不进行四舍五入;

实际上,取模结果的符号只取决于 number1。

        当x为负时,返回大于或等于x的最小整数。

例如:

        Fix(2.33333) ‘返回结果为2.

        Fix(6.66666) ‘返回结果为6.

        Fix(-6.66666) ‘返回结果为-6.

        Fix(-2.33333) ‘返回结果为-2.

floor函数 :

其功能是“向下取整”,或者说“向下舍入”,即取不大于x的最大整数(与“四舍五入”不同,下取整是直接取按照数轴上最接近要求的值左边的值,也就是不大于要求的值的最大的那个)。

例如:

        floor(3.14) = 3.0

        floor(9.999999) = 9.0

        floor(-3.14) = -4.0

       floor(-9.999999) = -10

发表评论

电子邮件地址不会被公开。 必填项已用*标注