Tag: modulo

来自Math.pow(65,17)%3233的令人惊讶的结果

由于某些原因,当处理大数字时,模数运算符不会给我正确的输出,看看代码 double x = Math.pow(65,17) % 3233; 输出应该是2790但是输出是887.0 我确定它有点傻但我无法绕过它。 提前致谢

为什么在非整数值上使用模数会失去浮点精度?

我想知道为什么我在使用这段代码时会失去精度: double x = 12.0456; // or float : same result System.out.println(x); // outputs 12.0456 obviously x %= 1; // should now be equal to 0.0456 right? System.out.println(x); // outputs 0.04560000000000031 or 0.045599937 when using float 12.0456模1应该等于0.0456对吗? 但它显示了一个略有不同的值,为什么我一直在失去精度? 我的意思是代码应该精确地减去1,直到值小于1。 但是,我发现了一种获得正确值的方法: double x = 12.0456; System.out.println(x); x %= 1; System.out.println((float)x); //outputs 0.0456 exactly 这种方式很完美,但你们有更好的解决方案吗? 我不关心我应该使用哪种浮点类型,我只是想找到一种干净的方法来获得正确的值! 我不喜欢将值转换为double然后转换为float。

当第一个数小于第二个数时,模数除法

如果这是一个简单的问题,我很抱歉,但是当第一个数字小于第二个数字时,我无法理解模数除法的概念。 例如,当我的书中1%4表示余数为1时,我不明白1是1%4的剩余部分。 1/4是0.25。 我在考虑模数除法错误吗?

C中的Python样式整数除法和模数

在Python和Ruby中,带符号的整数除法向负无穷大截断,有符号整数模数与第二个操作数具有相同的符号: >>> (-41) / 3 -14 >>> (-41) % 3 1 但是,在C和Java中,带符号的整数除法截断为0,有符号整数模数与第一个操作数的符号相同: printf(“%d\n”, (-41) / 3); /* prints “-13” */ printf(“%d\n”, (-41) % 3); /* prints “-2” */ 在C和Python中执行相同类型的除法和模数的最简单,最有效的方法是什么?