如果我在终端上运行python并输入,请按Enter:
-1 / 2
返回
-1
如果我在XCode中做同样的事情,编译C ++代码,我就有了这个:
int idx = -1 / 2;
cout << idx << endl;
打印出来:
0
为什么这些舍入方式不同?
编辑:忘了提及&#39; int&#39;是整数类型(int)。这已得到纠正。答案 0 :(得分:3)
在Python中,整数除法总是向下舍入,就好像你使用了floor函数一样。
在C ++ 03中,舍入方向留给了编译器。
在C ++ 11及更高版本中,它必须朝向零。
正如我所看到的,C ++舍入方向对于新手来说更容易理解,因为它提供了与手工计算相同的数值结果。它还对应于大多数计算机如何实现整数除法,即在各个操作的级别上是有效的。另一方面,Python舍入方向在数学上更优雅,在编程中更实用。
说明Pythonic优雅的一个实际区别是,计算出10人的派对需要3个乘客的出租车数量。在Python中,-(-10//3)
。在C ++中,(10 + (3-1))/3
。
答案 1 :(得分:0)
因为那是在这些语言中指定整数除法的方式(向下与zerowards)。
答案 2 :(得分:0)
Python将向下舍入整数之间的任何除法(即实际十进制值之间的两个整数中的最小值)。如果结果是2.6,它将舍入到2,如果它是-2.6,它将舍入到-3。
C ++将向零舍入(无论结果是正还是负)。因此,如果结果为2.6,则将其舍入为2,如果为-2.6,则将舍入为-2。