首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java中的Mod会产生负数

Java中的Mod会产生负数
EN

Stack Overflow用户
提问于 2011-03-22 07:36:18
回答 3查看 176.5K关注 0票数 172

当我计算int i = -1 % 2时,我得到了Java语言中的-1。在Python语言中,-1 % 2的结果是1。我必须做什么才能在Java中获得与模函数相同的行为?

EN

回答 3

Stack Overflow用户

发布于 2011-03-22 07:50:12

如果你需要n % m,那么:

代码语言:javascript
复制
int i = (n < 0) ? (m - (abs(n) % m) ) %m : (n % m);

数学解释:

代码语言:javascript
复制
n = -1 * abs(n)
-> n % m = (-1 * abs(n) ) % m
-> (-1 * (abs(n) % m) ) % m
-> m - (abs(n) % m))
票数 2
EN

Stack Overflow用户

发布于 2017-01-08 23:05:08

代码语言:javascript
复制
if b > 0:
    int mod = (mod = a % b) < 0 ? a + b : a;

不会两次使用%运算符。

票数 2
EN

Stack Overflow用户

发布于 2011-03-22 08:15:57

如果模数是2的幂,则可以使用位掩码:

代码语言:javascript
复制
int i = -1 & ~-2; // -1 MOD 2 is 1

相比之下,Pascal语言提供了两个运算符;REM接受分子的符号(x REM yx - (x DIV y) * y,而x DIV yTRUNC(x / y))和MOD需要一个正分母并返回一个正结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5385024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档