Python和C ++为-1/2返回不同的值

时间:2015-02-28 20:18:41

标签: python c++

如果我在终端上运行python并输入,请按Enter:

-1 / 2

返回

-1

如果我在XCode中做同样的事情,编译C ++代码,我就有了这个:

int idx = -1 / 2;
cout << idx << endl;

打印出来:

0

为什么这些舍入方式不同?

编辑:忘了提及&#39; int&#39;是整数类型(int)。这已得到纠正。

3 个答案:

答案 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。