Java 是否有任何数学实用方法来计算以下表达式?
是否有任何数学实用方法来计算以下表达式?基本上,我需要找到小于或等于x的最大整数,它可以被N平均除Java 是否有任何数学实用方法来计算以下表达式?,java,Java,是否有任何数学实用方法来计算以下表达式?基本上,我需要找到小于或等于x的最大整数,它可以被N平均除 x - x % N; // N is an integer. 对于正整数:(x/N)*N (如果需要严格小于x vs 0。)对于正整数:(x/N)*N (如果它需要严格小于x vs 0。)如果x是一个正整数,N是2的幂,你可以做x&-N 编辑:它是-n而不是2-n,感谢Peter Lawrey指出如果x是一个正整数,n是2的幂,你可以做x&-n 编辑:它是-n而不是2-n,感谢Peter L
x - x % N; // N is an integer.
对于正整数:(x/N)*N
(如果需要严格小于x vs 0。)对于正整数:(x/N)*N
(如果它需要严格小于x vs 0。)如果x是一个正整数,N是2的幂,你可以做x&-N
编辑:它是-n而不是2-n,感谢Peter Lawrey指出如果x是一个正整数,n是2的幂,你可以做x&-n
编辑:它是-n而不是2-n,感谢Peter Lawrey指出,如果x是正整数,那么您可以使用
int result = x - x % N;
int result = N * (int)(x/N);
或
如果x是正数,那么可以使用
int result = x - x % N;
int result = N * (int)(x/N);
如果x是正整数,则可以使用
int result = x - x % N;
int result = N * (int)(x/N);
或
如果x是正数,那么可以使用
int result = x - x % N;
int result = N * (int)(x/N);
例如,
-56
和10
呢<代码>-56-(-56)%10计算为-60
-这是您期望的吗?它不是整数x/N
?关于java不太确定,但如果你的x
是整数,这就是我所期望的。如果x
也是整数,你为什么不把你发布的代码放在上面呢?@MichaelKrelin hacker我想他想得到N*(x/N)
,在这种情况下,x=-56
和N=10
会得到-50
,因为-56/10=-5
。嗯,是的,我没有足够的理解。例如,-56
和10
<代码>-56-(-56)%10计算为-60
-这是您期望的吗?它不是整数x/N
?关于java不太确定,但如果你的x
是整数,这就是我所期望的。如果x
也是整数,你为什么不把你发布的代码放在上面呢?@MichaelKrelin hacker我想他想得到N*(x/N)
,在这种情况下,x=-56
和N=10
会得到-50
,因为-56/10=-5
。嗯,是的,我没有足够的意义。适用于x和N的所有整数值,其中N!=0,只要问题定义是整数,最大绝对值可能比“x”更接近于零,但处理所有情况会让我头疼。我不得不编辑我的评论,因为当x小于0时,逻辑会颠倒。当x为负数时,它会找到大于x的最小整数。我将其限制为正数的一个原因是,不清楚OP在算术上是要“更小”还是要“更小”。还有一个问题就是除法是如何处理负数的——我对那些略显神秘的规则的记忆总是有点不稳定。适用于x和N的所有整数值,其中N!=0,只要问题定义是整数,最大绝对值可能比“x”更接近于零,但处理所有情况会让我头疼。我不得不编辑我的评论,因为当x小于0时,逻辑会颠倒。当x为负数时,它会找到大于x的最小整数。我将其限制为正数的一个原因是,不清楚OP在算术上是要“更小”还是要“更小”。还有一个问题就是除法是如何处理负数的——我对那些略显神秘的规则的记忆总是有点不稳定。是的,如果N是2的幂,你可以做一些非常奇怪(而且神秘)的舍入运算。(总是很好地评论这样的逻辑,因为即使三个月后你也不会理解。)是的,如果N是2的幂,你可以做一些非常奇怪(而且神秘)的舍入操作。(一定要好好评论一下这种逻辑,因为即使是3个月后你也不会理解。)