相关疑难解决方法(0)

JavaScript%(modulo)给出负数的否定结果

根据谷歌计算器 (-13) % 6451.

根据Javascript(参见这个JSBin)它是-13.

我该如何解决?

javascript math modulo

224
推荐指数
9
解决办法
7万
查看次数

使Java模数的行为与负数一样的最佳方法是什么?

在java时你这样做

a % b
Run Code Online (Sandbox Code Playgroud)

如果a是负数,它将返回负结果,而不是像它应该那样回绕到b.解决这个问题的最佳方法是什么?我能想到的唯一方法就是

a < 0 ? b + a : a % b
Run Code Online (Sandbox Code Playgroud)

java modulo negative-number

95
推荐指数
5
解决办法
4万
查看次数

在枚举类型上实现`next`和`previous`的最佳方法是什么?

假设我有一个枚举:

enum E {
    A, B, C;
}
Run Code Online (Sandbox Code Playgroud)

正如所示这个答案lucasmo,枚举值存储在它们初始化的顺序静态数组,你可以在以后检索(的克隆)这个数组E.values().

现在假设我想要实现E#getNext并且E#getPrevious以下所有表达式都评估为true:

E.A.getNext() == E.B
E.B.getNext() == E.C
E.C.getNext() == E.A

E.A.getPrevious() == E.C
E.B.getPrevious() == E.A
E.C.getPrevious() == E.B
Run Code Online (Sandbox Code Playgroud)

我目前的实施getNext如下:

public E getNext() {
    E[] e = E.values();
    int i = 0;
    for (; e[i] != this; i++)
        ;
    i++;
    i %= e.length;
    return e[i];
}
Run Code Online (Sandbox Code Playgroud)

和类似的方法getPrevious.

然而,这段代码充其量似乎很麻烦(例如,"空" for循环,可论证滥用计数器变量,并且最坏的可能是错误的(可能反思).

在Java 7中实现枚举类型的最佳方法getNextgetPrevious …

java optimization enums

53
推荐指数
2
解决办法
2万
查看次数

PHP中-13%64 = -13怎么样?

源自这个问题:(Java)java如何使用负数进行模数计算?

在哪里强制PHP返回正51?

更新
寻找要修复的配置设置,而不是硬猜测

还是像bcmath这样的其他数学函数?

更新
并不完全相信java答案,因为它没有考虑负模数 -13+(-64) =?

php math modulus

11
推荐指数
2
解决办法
5154
查看次数

8
推荐指数
1
解决办法
126
查看次数

为什么模运算在Java VS Perl中会产生不同的结果?

我在Java 7中运行它,我得到:

double remainder1 = 1 % 1000;
double remainder2 = 0.01 % 1000;
double remainder3 = -1 % 1000;

System.out.println("START: "+remainder1+" | "+remainder2+" | "+remainder3);
>>>START: 1.0 | 0.01 | -1.0
Run Code Online (Sandbox Code Playgroud)

但是当我在Perl 5.8.8中运行相同的操作时,我得到了三分之二的不同结果:

my $remainder1 = 1 % 1000;
my $remainder2 = 0.01 % 1000;
my $remainder3 = -1 % 1000;
print "START: $remainder1 | $remainder2 | $remainder3";
>>>START: 1 | 0 | 999
Run Code Online (Sandbox Code Playgroud)

为什么在最后两次计算中存在这样的差异?如何让perl匹配java结果?

java perl modulo

7
推荐指数
2
解决办法
196
查看次数

如何使用模运算符递增和递减整数

我试图基于点击增加一个整数.点击发生的方式并不重要,所以我会坚持逻辑.我在Java中这样做,但逻辑应该是相同的.

int index = 0;

// then within the click event
//arrySize holds the size() of an ArrayList which is 10

index = (index + 1) % arrySize;
Run Code Online (Sandbox Code Playgroud)

有了这个逻辑,每次用户点击时,index都会增加1.然后它的模数arrySizeindexindex匹配时返回0arrySize

(10%10会使索引回到0)这很好,因为它有点像一个从0到10然后回到0并且从不超过10的循环.

我试图做同样的逻辑,但后退 在哪里基于点击数字将减少并得到0然后回到arrySize而不是-1

我怎样才能实现这个逻辑?

java increment modulo decrement

5
推荐指数
1
解决办法
3042
查看次数

Java中的模数结果不正确

我试图在java中运行一些椭圆曲线结果,但模运算符似乎没有输出正确的结果.

int a = 17;
double previousx = 4; 
double previousy = 14;
double xnew;
double ynew;
double sigma;
double convert;

for (int i = 1; i < 10; i++) {
    convert = 0;
    for (int j = 0; i<60; j++) {
        if (((2 * previousy * j) % 59) == 1) {
            convert = j;
            break;
        }
    }

    sigma = ((3 * Math.pow(previousx, 2) + a) * convert) % 59;
    xnew = ((sigma * sigma) - (2 * previousx)) …
Run Code Online (Sandbox Code Playgroud)

java modulo

1
推荐指数
1
解决办法
1030
查看次数