groovy - Groovy Power Operator (**) 是否在关联性中被破坏?
问题描述
在 Groovy 3.0 中(Groovy 版本:3.0.0-rc-1 JVM:11.0.2)
println 3**3**3
println 3.0**3.0**3.0
给
19683
19683
在终端的 Python (Python 3.5.2) 中,我得到
>>> 3**3**3
7625597484987
>>> (3**3)**3
19683
官方网站没有给出任何指示。
到目前为止,Groovy 中的 ** 是否已损坏?
编辑
stackoverflow和math.stackexchange中的答案清楚地表明,数学惯例是求幂是右结合的。
缺陷被定义为软件产品中不满足软件需求(如需求规范中所述)或最终用户期望(可能未指定但合理)的条件。
由于这种合理的期望以未记录的方式被违反,这不被认为是一个错误吗?
解决方案
不,它没有坏
与所有其他运算符一样,它只是具有从左到右的关联性
在 python**
中具有从右到左的关联性,因此也没有被破坏
他们只是有不同的规则
推荐阅读
- python - 重新创建用于生成文本的字符级 RNN
- wxpython - 如何在 wxPython 中禁用平滑滚动?
- rrdtool - 一小时图表在英国 BST -> GMT 显示“nan”前一小时生成
- javascript - 如何在此 jQuery 代码上设置超时?
- ios - 无论多行选项如何,UILabel 都会截断文本
- cmake - 如何创建启用了特殊构建选项的现有目标的可执行目标?
- excel - 在雅虎财经中检索数据报价的 URL 问题
- python - Python“in”关键字正在引发 KeyError
- wordpress - 在 nginx 下为 Wordpress 创建 fail2ban 过滤器
- c# - 如何处理一个字段