【Java】取模(Math.floorMod())和取余(%)
2023-12-25 06:07:48
例子
public static void main(String[] args) {
System.out.println("------Complementation------");
System.out.println(7 % 4);
System.out.println((-7) % 4);
System.out.println(7 % (-4));
System.out.println((-7) % (-4));
System.out.println();
System.out.println("------Modulo Operation------");
System.out.println(Math.floorMod(7, 4));
System.out.println(Math.floorMod(-7, 4));
System.out.println(Math.floorMod(7, -4));
System.out.println(Math.floorMod(-7, -4));
}
输出结果为:
------Complementation------
3
-3
3
-3
------Modulo Operation------
3
1
-1
-3
取余结果的符号和 a 一致,取模结果的符号和 b 一致。
当两个数字都是正数或都是负数时,结果是一样的。
取余
取余的计算公式为 a - (int)(a / b) * b
这里 (int) 是向 0 取整的。
取模
取模的计算公式为 a - (floor)(a / b) * b
floor 是向 负无穷 取整的。
造成差别的原因
当 a 和 b 符号不同时,a / b 是负数,(int)向0取整,(floor)向下取整,导致取余的结果 < 取模的结果。
参考资料
Java中的取模(Math.floorMod())与取余(%)
取模(Mod)和取余(%)的 区别 和 转化(超详细解释)
文章来源:https://blog.csdn.net/qq_43406895/article/details/135093910
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!