标签: division

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

在Python和Ruby中,带符号的整数除法向负无穷大截断,有符号整数模数与第二个操作数具有相同的符号:

>>> (-41) / 3
-14
>>> (-41) % 3
1
Run Code Online (Sandbox Code Playgroud)

但是,在C和Java中,带符号的整数除法截断为0,有符号整数模数与第一个操作数的符号相同:

printf("%d\n", (-41) / 3); /* prints "-13" */
printf("%d\n", (-41) % 3); /* prints "-2" */
Run Code Online (Sandbox Code Playgroud)

在C和Python中执行相同类型的除法和模数的最简单,最有效的方法是什么?

c c++ java division modulo

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

我如何划分所以我得到一个十进制值?

我想知道如何在Java中获得单值的余数和商.

例:

3/2我应该得到1.5的价值.

如果我使用/运算符,我只得到商.如果我使用%操作员,我只得到余数.如何在同一个变量中同时获得两者?

java math division modulus

23
推荐指数
4
解决办法
12万
查看次数

为什么math.floor(x/y)!= x // y用于Python中两个可分割的浮点数?

我一直在阅读Python中的除法和整数除法以及Python2与Python3之间的区别.在大多数情况下,这一切都是有道理的.仅当两个值都是整数时,Python 2才使用整数除法.Python 3总是执行真正的划分.Python 2.2+引入了//整数除法运算符.

其他程序员提供的示例很好,很整洁,例如:

>>> 1.0 // 2.0      # floors result, returns float
0.0
>>> -1 // 2         # negatives are still floored
-1
Run Code Online (Sandbox Code Playgroud)

如何//实施?为什么会发生以下情况:

>>> import math
>>> x = 0.5 
>>> y = 0.1
>>> x / y
5.0
>>> math.floor(x/y)
5.0
>>> x // y
4.0
Run Code Online (Sandbox Code Playgroud)

不应该x // y = math.floor(x/y)?这些结果是在python2.7上生成的,但由于x和y都是浮点数,因此python3 +上的结果应该相同.如果有一些浮点错误x/y实际上4.999999999999999并且math.floor(4.999999999999999) == 4.0不会反映出来x/y

但是,以下类似情况不受影响:

>>> (.5*10) // (.1*10)
5.0
>>> .1 …
Run Code Online (Sandbox Code Playgroud)

python division integer-division

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

如何在python中的datetime.timedelta上执行divison?

我希望能够做到以下几点:

num_intervals = (cur_date - previous_date) / interval_length
Run Code Online (Sandbox Code Playgroud)

要么

print (datetime.now() - (datetime.now() - timedelta(days=5))) 
      / timedelta(hours=12)
# won't run, would like it to print '10'
Run Code Online (Sandbox Code Playgroud)

但是timedeltas不支持除法运算.有没有办法可以为timedeltas实现divison?

编辑:看起来这是添加到Python 3.2(感谢rincewind!):http://bugs.python.org/issue2706

python datetime date division timedelta

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

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

有效地实现floored/euclidean整数除法

地板划分是指结果始终向下(朝向-∞),而不是0:

分工类型

是否有可能在C/C++中有效地实现floored或euclidean整数除法?

(显而易见的解决方案是检查红利的标志)

c c++ math division integer-division

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

具有32/16位除法的处理器上的64/32位除法

我的处理器是一个没有FPU和整数数学的小型16位微控制器,只有16/16分频和32/16分频,都需要18个周期.目前我正在使用一个非常慢的软件程序(约7,500个周期)进行64/32分割.有没有办法使用这些分区引擎来计算64/32分区?类似于我已经使用16x16乘法器和加法器来计算32x32乘法?我正在使用C但可以使用任何关于如何完成的一般性解释......我希望能够达到<200个周期(如果可能的话).

algorithm optimization division

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

如何将pandas列的值除以另一列

我有一个数据帧:

>>> dt
                   COL000   COL001   QT
STK_ID  RPT_Date                       
STK000  20120331   2.6151   2.1467    1
        20120630   4.0589   2.3442    2
        20120930   4.4547   3.9204    3
        20121231   4.1360   3.8559    4
STK001  20120331  -0.2178   0.9184    1
        20120630  -1.9639   0.7900    2
        20120930  -2.9147   1.0189    3
        20121231  -2.5648   2.3743    4
STK002  20120331  -0.6426   0.9543    1
        20120630  -0.3575   1.6085    2
        20120930  -2.3549   0.7174    3
        20121231  -3.4860   1.6324    4
Run Code Online (Sandbox Code Playgroud)

我希望列值除以'QT'列,有点像这样:

dt =  dt/dt.QT     # pandas does not accept this syntax
Run Code Online (Sandbox Code Playgroud)

所需的输出是:

STK_ID  RPT_Date        COL000       COL001  QT
STK000  20120331   2.615110188  2.146655745 …
Run Code Online (Sandbox Code Playgroud)

division pandas

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

为什么0除以0是错误的?

我在我的代码中进行的计算中遇到了这个问题,如果divident也为0,则除数为0.在我的代码中,我返回0表示该情况.我想知道,虽然除零通常是未定义的,为什么不对这种情况作出例外?我理解为什么除零是不确定的基本上是它无法逆转.但是,在0/0的情况下我没有看到这个问题.

编辑好了,所以这个问题产生了很多讨论.我犯了一个错误,就是因为它得到了很多选票而过于急切地接受了答案.我现在接受了AakashM的答案,因为它提供了如何分析问题的想法.

math division divide-by-zero

20
推荐指数
5
解决办法
8249
查看次数

awk中的整数除法

我想awk使用整数除法将两个数字分开,即截断结果.例如

k = 3 / 2
print k
Run Code Online (Sandbox Code Playgroud)

应该打印 1

根据手册,

师; 因为awk中的所有数字都是浮点数,结果不会舍入为整数

有没有解决方法来获取整数值?

原因是我想得到一个带有整数索引[0到num-1] 的数组的中间元素.

awk integer division

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