-100 mod 10 = 0 (Edge-case: negative numbers as inpu-6ren">
gpt4 book ai didi

java - 如何在不使用 "%"运算符的情况下计算两个数字的余数/模?

转载 作者:行者123 更新时间:2023-12-01 16:30:02 28 4
gpt4 key购买 nike

例如使用以下输入:

int num = -100
int divisor = 10
=> -100 mod 10 = 0 (Edge-case: negative numbers as input)
<小时/>
int num = 300
int divisor = -7
=>300 mod 7 = 6
<小时/>

我以前使用过此方法,但对于负数,它不起作用:

int method(int i, int div){
return (num - divisor * (num / divisor));
}

预期结果:

-1234, 512 ==> <302>

实际结果:

-1234, 512 ==> <210>

最佳答案

这是您的方法。

static int method(int num, int div){
return num - div * (num / div);
}

它工作得很好,因为无论使用什么符号,它都会返回余数,就像。但如果您想要更多积极的 mod 答案,您需要执行以下操作:

static int method(int num, int div){
int mod = num - div * (num / div);
return (mod < 0) ? mod + div : mod;
}

来自Java Virtual Machine Specification对于irem

Both value1 and value2 must be of type int. The values are popped from the operand stack. The int result is value1 - (value1 / value2) * value2. The result is pushed onto the operand stack.

关于java - 如何在不使用 "%"运算符的情况下计算两个数字的余数/模?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62067224/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com