为什么在Python中0 ** 0
等于1
?它不应该像0 / 0
那样抛出异常吗?
Wikipedia对历史进行了有趣的报道,并对以下内容的价值有不同的看法0 ** 0
:
至少从19世纪初期开始,辩论一直在进行。当时,大多数数学家都同意
0 ** 0 = 1
,直到1821年,柯西(Cauchy)0 ** 0
以及诸如0⁄0
未定义形式的表格之类的表达式才被列出。在1830年代,利比里(Libri)发表了令人信服的论点0 ** 0 = 1
,莫比乌斯(Möbius)站在他身边。
当应用于计算机时,IEEE754建议使用几种功能来计算功率。它定义pow(0,0)
和pown(0, 0)
为return 1
,powr(0, 0)
为return NaN
。
大多数编程语言遵循的约定0 ** 0 == 1
。对于整数和浮点参数,Python也不例外。
问题内容: 在Python中(我仅使用Python 3.6进行过检查,但我相信它也适用于许多以前的版本): 但: 为什么两种方法的结果不同?相等运算符对元组的处理方式是否不同? 问题答案: 前两个表达式都解析为元组: (即),然后是 ,其次是(仍然如此)。 由于逗号分隔符相对于相等运算符具有较高的优先级,因此将表达式进行拆分:Python看到一个元组包含两个表达式,其中一个恰好是一个相等测试,而不
问题内容: 在Python 2.6中查看Queue.py时,我发现这个结构有点奇怪: 如果maxsize为0,则队列永远不会满。 我的问题是在这种情况下如何运作?如何0 < 0 == 0被认为是错误的? 问题答案: 我相信Python对关系运算符的序列有特殊的处理方式,以使范围比较易于表达。能说比说好得多。 这些称为链接比较。这是他们文档的链接。 在您谈论的其他情况下,括号会强制在一个关系运算符之
问题内容: 我正在尝试做一些基本的数学运算,并且一直以的形式弹出。我敢肯定它与它有关,但我不知道如何解决它。我需要使用整数,但是要得出这些整数的数学运算使用小数。我该怎么做? 问题答案: 这对于Blackberry而言并不特殊,它是标准的Java行为。 这是因为您正在执行整数数学运算: 请改用Double或更改顺序
问题内容: 我有以下代码: 旨在将物料价格初始化为0,然后获取有关其的信息。如果价格被告知为“ e”,则表示交换而不是卖出,其作为负数存储在数据库中。 也有可能将价格保留为0,这是因为该项目是奖励商品,或者是因为价格将在以后设置。 但是,每当未设置价格时,其初始值将为0,则上述循环将评估为true,并将价格设置为-1。也就是说,它认为0等于“ e”。 如何解释呢? 当价格提供为0(初始化后)时,该
问题内容: 运行下面的代码结果为0? 问题答案: 两个操作数(1和3)是整数,因此使用整数算术(此处为除法)。将结果变量声明为double只会导致除法后发生隐式转换。 当然,整数除法会返回除法四舍五入的真实结果。因此,0.333…此处的结果四舍五入为0。(请注意,处理器实际上不进行任何舍入,但是您仍然可以这样考虑。) 另外,请注意,如果两个操作数(数字)均以浮点数给出;3.0和1.0,甚至只是第一
问题内容: 我必须编写一个例程,如果变量的类型为,则将变量的值加1,否则将变量的值分配为0,其中变量的初始值为或。 第一个实现是因为我认为没有数字会使算术表达式为假,但是由于计算为真,所以这是错误的。然后,我得知行为类似于0,并且以下表达式均被评估为true。 当然不是0。被评估为false。这使看似重言式的表达成为错误。 为什么实际上不是0,却像0? 问题答案: 您真正的问题似乎是: 为什么: