JS学习笔记-Javascript中除法与求余

这篇博客探讨了JavaScript中除法和求余运算的特性,指出JS整数相除会保留小数部分,导致不同于其他语言的结果。通过示例解释了使用Math.floor、Math.ceil和Math.round进行取整的差异,并且提到了位运算在处理负数时的优势。此外,还讨论了JS中求余运算对于负数和浮点数的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

***

刚学JS不久,在leecode刷到此题时:

看了官方解答写(copy)了如下代码:

/**
 * @param {number} x
 * @return {number}
 */
var reverse = function(x) {
   var rev=0,temp=x;
while(temp>=10||temp<=-10){
   rev = rev*10+temp%10;
   temp=temp/10;
}  rev = rev*10+temp;
  if(x<0){
        return (rev > 2**31 || (-rev) > 2**31-1 )? 0 : rev; 
    }
    else{return (rev > 2**31-1 || -rev > 2**31 )? 0 : rev;
    }
};

输出如图:

为何会是4??
由于以前学习过C和C++,所以看到这个答案十分迷惑。网上搜了一圈,了解到在JS中,由于直接定义var变量类型而不是int类型, 整数相除会保留小数点。

以123为例子,第一轮rev=3,temp=12.3;第二轮rev=30+2.3=32.3,temp=1.23;while循环完后rev =323+1.23=324.23,所以最后输出为324。

temp = temp/10 改为 temp = Math.floor(temp/10),这里Math.floor意为向下取整,这样就可以实现想要的结果了,但是当x为负数时,结果就又会有问题了,比如Math.floor(-100/3) = - 34。 使用位运算可以解决: temp = ~~(temp/10);

另外还有Math.ceil(x)为向上取整,Math.round(x)为四舍五入。

并且在JS中3.5 % 2求余数的值为1.5。对于负数情况,Math.floor向下取整可能会得到我们不想要的结果,使用位运算可以提高效率的同时得到想要的结果,以下为某网站截图:
在这里插入图片描述
截图原文来源如下:
原文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值