Java/Python 负数取余的不同

Java和Python中,负数取余操作有不同。Python的%运算符返回的是模数,始终为正;而Java返回的是余数,与被除数符号相同。这导致在处理负数时,两者结果可能不一致。
摘要由CSDN通过智能技术生成

Java/Python 负数取余的不同


在Java写循环数组时,发现了取余(%)操作和设想的不太一样。
例如, -1 % 16 在Python中结果为 15, 而在Java中为 -1.
作为数组索引,当然是想让取余结果为正数!所以只好加了一行判断。

if (mod < 0) mod += 16;

事后在stack overflow上找到了原因,

The problem here is that in Python the % operator returns the modulus and in Java it returns the remainder. These functions give the same values for positive arguments, but the modulus always returns positive results for negative input, whereas the remainder may give negative results.

简单来说,Python返回的是模数,模数为正数。Java返回的是余数,余数和被除数同号。举个栗子:

int a 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值