Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么-1/2在C++中被评估为0,而在Python中被评估为-1? C++:cout_Python_C++_Python 2.x_Integer Division - Fatal编程技术网

为什么-1/2在C++中被评估为0,而在Python中被评估为-1? C++:cout

为什么-1/2在C++中被评估为0,而在Python中被评估为-1? C++:cout,python,c++,python-2.x,integer-division,Python,C++,Python 2.x,Integer Division,来自Python文档: /division和//floor division运算符生成其参数的商。数值参数首先转换为通用类型。普通或长整数除法产生相同类型的整数;结果是应用“地板”函数对结果进行数学除法 楼层函数圆到最接近负无穷大的数,因此-1。< /P> < P>我不确定Python,但C++中的整数/整数=整数,因此在-1/2是-0.5的情况下,它被自动舍入整数,因此得到0个答案。 在Python系统中,可以使用底层函数将结果转化为整数,< P> C++,从这个引用: 最容易将除法运算符看作

来自Python文档:

/division和//floor division运算符生成其参数的商。数值参数首先转换为通用类型。普通或长整数除法产生相同类型的整数;结果是应用“地板”函数对结果进行数学除法


楼层函数圆到最接近负无穷大的数,因此-1。< /P> < P>我不确定Python,但C++中的整数/整数=整数,因此在-1/2是-0.5的情况下,它被自动舍入整数,因此得到0个答案。


在Python系统中,可以使用底层函数将结果转化为整数,

< P> C++,从这个引用:

最容易将除法运算符看作有两个 不同的“模式”。如果两个操作数都是整数,则除法 运算符执行整数除法。整数除法删除任何 分数并返回一个整数值

因此,-1/2将产生-0.5,分数下降,产生0

正如@SethMMorton所指出的,Python的规则是floor,它产生-1。这里描述了:


用@MikeGraham提到的术语来说,地板是一个朝着负无穷大的圆。下降分数是一个圆向零。

< P>整数,在C++中舍入为0,在Python中,它向无穷远旋转。
抽象地处理这些事情的人倾向于认为朝着负无穷大的方向移动更有意义,这意味着它与数学中定义的模函数兼容,而不是%有着某种有趣的含义。编程语言的传统是向0转换,这不是最初在C++中定义的,而是C++的C示例,但是最终C++和C定义了这样的方式,复制FORTRAN。< /P>可能想要指定哪个文档,因为OP在要求2种语言之间的差异。对吗?@chris,引用的文本是Python2,其中/和//对int做同样的事情。在Python3中,如果结果是非整数,则some_int/另一个_int返回浮点。这种传统可能是由于在流行计算机上实现整数除法的方式。APL A编程语言于1960年首次发布,它的模运算符的工作原理就好像整数除法向负无穷大舍入一样余数的符号与除数或零的符号相同,而不是被除数。对于任何不熟悉APL的人,请查看-我将提供一些很酷的片段,但不幸的是,我需要显示的字符不是unicode的正常部分,大多数计算机都会呕吐