标签: mod

如何用mod在-pi和pi之间包裹弧度?

我想在 -pi/pi 之间包裹弧度。

这是我所做的实际代码,它有效:

radians > gPIf ? radians - g2PIf : radians < -gPIf ? radians + g2PIf : radians;
Run Code Online (Sandbox Code Playgroud)

但我不太喜欢它。尝试使用 mod,但似乎我对负值有问题:

std::fmod(radians + gPIf, g2PIf) - gPIf
Run Code Online (Sandbox Code Playgroud)

是否有任何“mod”也适用于负数?

即 -20 mod 360 与操作系统计算器返回 340 :)

c++ mod

5
推荐指数
0
解决办法
61
查看次数

C++ 在计算比 b 大得多的 a 的 mod(a,b) 时,std::fmod 如何避免舍入错误

我有一个小函数来计算 mod 如下:

double mod(double a, double b){
  return a-floor(a/b)*b;
}
Run Code Online (Sandbox Code Playgroud)

mod(1e15,3) 正确返回 1,但 mod(1e16,3) 由于乘法中的数值舍入错误而返回 0。但是使用 std::fmod(1e16,3) 可以正常工作并返回 1。有谁知道他们是如何避免这个问题的?

c++ algorithm math mod

5
推荐指数
0
解决办法
122
查看次数

VBA奇数/ Mod

我正在寻找VBA脚本的一些帮助.我一直试图弄清楚如何使用mod函数.

这是我到目前为止所做的:

Function AddOddNumbersWithMod(nr)
    Dim i, sum
    sum = 0
    For i = (IF 1 MOD 2 = 0) to nr step 1
        sum = sum + i <-- (calculate all the odd numbers before nr)
    Next i
End Function
Run Code Online (Sandbox Code Playgroud)

任何建议将不胜感激.

vba mod

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

Kotlin负模数返回负值

Kotlin中,我看到函数a.mod(n)if a为负数,结果为负数.这不是什么模数是要做的.我能做些什么来保持积极的模数?

例如:

(-2).mod(9)
Run Code Online (Sandbox Code Playgroud)

回来-2,应该是7.

modulo kotlin mod

4
推荐指数
3
解决办法
1121
查看次数

在java中不使用乘法,除法和mod运算符将两个整数相除

我写了一个代码,它在两个数相除后找出商,但不使用乘法、除法或 mod 运算符。

我的代码

public int divide(int dividend, int divisor) {

    int diff=0,count=0;
    int fun_dividend=dividend;
    int fun_divisor=divisor;
    int abs_dividend=abs(dividend);
    int abs_divisor=abs(divisor);

    while(abs_dividend>=abs_divisor){
        diff=abs_dividend-abs_divisor;

        abs_dividend=diff;
        count++;

    }

    if(fun_dividend<0 && fun_divisor<0){
        return count;
    }
    else if(fun_divisor<0||fun_dividend<0) {
        return (-count);
    }

    return count;

}
Run Code Online (Sandbox Code Playgroud)

我的代码通过了像股息=-1、除数=1 或除数=1 和除数=-1 之类的测试用例。但是它不能通过像dividend = --2147483648和divisor =-1这样的测试用例。但是,当两个输入都为负时,我有一个 if 语句。

  if(fun_dividend<0 && fun_divisor<0){
        return count;
    }
Run Code Online (Sandbox Code Playgroud)

当我的输入是 -2147483648 和 -1 时,它返回零。我调试了我的代码,发现它无法到达while循环的内部语句。它只是检查while循环并终止并执行

 if(fun_dividend<0 && fun_divisor<0){
        return count;
    }
Run Code Online (Sandbox Code Playgroud)

很明显,两个输入都是负数,所以我使用Math.abs函数使它们成为正数。但是当我尝试查看变量 abs_dividend 和 abs_divisor 的值时,它们显示负值。

整数最大值可以是 9 位数字。那么我怎么能通过这个测试用例呢?根据此测试用例,股息是一个 10 位数字,对于整数范围无效。

根据测试用例,我得到的输出应该是 …

java if-statement function while-loop mod

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

如何找到按键的探测顺序?

我该如何解决这个问题?我对如何启动感到困惑。键34、25、79、56、6将插入长度为11的哈希表中,其中冲突将通过开放寻址解决。哈希函数为h(k,i)=(k mod11 + i(1 + k mod10))mod11 a。计算上述每个键的探测顺序。

hash-function hashtable probe mod

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

创建具有偶概率的随机int生成器

在下面的代码,我希望确保有偶数theImageRand等于theImage或theImage2的机会,但我意识到,在1和100之间有更多数字等于2模1比2模0,所以被选择theImage不成比例的时间.

这是我遇到的最简单的想法,但也许有一个功能可以做到这一点更容易?我也在想我能找到一个符合我要求的数字并把它放到randi(n)中.

xRand = randi(100);
    if mod(xRand,2) == 1 
       theImageRand = theImage;
    elseif mod(xRand,2) == 0
       theImageRand = theImage2;
    end
Run Code Online (Sandbox Code Playgroud)

如果我能更清楚地解释,请告诉我.提前致谢.

random matlab mod

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

signed int modulo unsigned int产生无意义的结果

我需要在C中执行一个真正的数学模.我有理由允许模数参数的负数,因为我的模块计算会产生负中间结果,必须将其放回到最少残留系统中.但是,我写道,允许负面模块是没有意义的

unsigned int mod( int x, unsigned int m )
{
    int r = x % m;
    return r >= 0 ? r : r + m;
}
Run Code Online (Sandbox Code Playgroud)

然而,使用负数和正模块调用此类函数

printf("%u\n", mod(-3, 11));
Run Code Online (Sandbox Code Playgroud)

产生输出

1
Run Code Online (Sandbox Code Playgroud)

我不明白为什么.你能解释一下吗?

编辑:我知道运算符%与数学模数不同,我知道如何定义正数和负数.我问的是它会为不同的签名做些什么,而不是不同的标志.

c modulo signedness mod

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

无法将预期类型'Integer - > t'与实际类型'Bool'匹配

在哈斯克尔,

这很好用:(mod 9) 7.它给出了预期的结果:当9除以7(2)时的余数.

同样,这也有效:(mod 9) 9.它返回0.

这让我觉得(mod 9 == 0) 9应该回归True.然而,事实并非如此:它反而引发了错误.

错误:

<interactive>:62:1: error:
    • Couldn't match expected type ‘Integer -> t’
                  with actual type ‘Bool’
    • The function ‘mod 9 == 0’ is applied to one argument,
      but its type ‘Bool’ has none
      In the expression: (mod 9 == 0) 9
      In an equation for ‘it’: it = (mod 9 == 0) 9
    • Relevant bindings …
Run Code Online (Sandbox Code Playgroud)

haskell predicate boolean-expression mod

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

通过连接前 n 个自然数的二进制表示形式形成的数字的十进制值

给定一个数n,找出通过连接前n 个自然数的二进制表示形式形成的数字的十进制值。
打印答案模 10^9+7。

此外,n可以大到 10^9,因此需要对数时间方法。

例如:n = 4,答案 =220

解释:数字形成= 11011100( 1=1, 2=10, 3=11, 4=100)。11011100= 的十进制值"220"

我在下面使用的代码仅适用于第一个整数N<=15

    String input = "";
    for(int i = 1;i<=n;i++) {
        input += (Integer.toBinaryString(i));
    }
    return Integer.parseInt(input,2);
Run Code Online (Sandbox Code Playgroud)

java math binary mod

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