繁体   English   中英

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

[英]Python and C++ return different values for -1/2

如果我在终端上运行python并键入它,然后按Enter:

-1 / 2

它返回

-1

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

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

它打印此:

0

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

编辑:忘了提到'int'是一个整数类型(int)。 这已得到纠正。

在Python中,整数除法始终向下舍入,就像使用了floor函数一样。

在C ++ 03中,舍入方向留给编译器。

在C ++ 11和更高版本中,要求接近零。


正如我所看到的,对于新手来说,C ++取整方向更容易理解,因为它提供了与手工计算相同的数值结果。 它还与大多数计算机如何实现整数除法相对应,即在单个操作级别上是有效的。 另一方面,Python的舍入方向在数学上更优雅,在编程中更实用。


一个实际的不同是显示Python的优雅之处,它是计算10人聚会所需的载客量为3位乘客的出租车。 在Python中, -(-10//3) 在C ++中, (10 + (3-1))/3

因为这是在这些语言中指定整数除法的方式(向下与向零)。

Python会将整数之间的任何除法向下舍入(即,实际十进制值之间的两个整数中的最小值)。 如果结果为2.6,则将舍入为2,如果为-2.6,则将舍入为-3。

C ++将舍入为零(无论结果是正数还是负数)。 因此,如果结果为2.6,则将四舍五入为2;如果结果为-2.6,则将四舍五入为-2。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM