Lua中括号的位置(操作顺序)
我试图找出下面公式中的运算顺序 我用这个脚本计算并显示三年后1000欧元在5%的利率下增长了多少 p是银行年利率,单位为%。 A是初始金额。 n是年数Lua中括号的位置(操作顺序),lua,Lua,我试图找出下面公式中的运算顺序 我用这个脚本计算并显示三年后1000欧元在5%的利率下增长了多少 p是银行年利率,单位为%。 A是初始金额。 n是年数 p = 5 A = 1000 n = 3 根据数学,这是最正确的方法吗?据我所知,它首先除以p/100,然后加1,然后乘以^n,最后乘以A* my_version = (A * ((1 + (p / 100)) ^ n)) print(my_version) 教师版本: teachers_version = A * ((1 + p / 100
p = 5
A = 1000
n = 3
根据数学,这是最正确的方法吗?据我所知,它首先除以p/100,然后加1,然后乘以^n,最后乘以A*
my_version = (A * ((1 + (p / 100)) ^ n))
print(my_version)
教师版本:
teachers_version = A * ((1 + p / 100) ^ n)
print(teachers_version)
其他版本(我怎样才能确保它不只是把1加在p上,然后除以100?我知道这不是因为我已经试过了,但在将来或其他数学问题上,我只想了解计算机是如何解决这个问题的):
还是计算机只知道操作顺序
每个脚本的输出都是相同的:
1157.625确保的最佳方法是将Lua标记为书签,并在必要时对其进行检查。Lua 5.4参考手册在第3.4.8章中列出了操作员名单 Lua中的运算符优先级如下表所示,从低到低 更高优先级:
or
and
< > <= >= ~= ==
|
~
&
<< >>
..
+ -
* / // %
unary operators (not # - ~)
^
/
比+
具有更高的优先级,因此我们将p
除以100,然后再将其添加到“1”中
您的版本:
version = (A * ((1 + (p / 100)) ^ n))
外括号是多余的。它们没有效果,所以你可以把它们放在一边
version = A * (1 + (p / 100)) ^ n)
p/100
周围的括号也是多余的<代码>/
比+
具有更高的优先级,因此您不需要他们告诉计算机先执行此操作
version = A * (1 + p / 100) ^ n
这就给你留下了第三个版本。你需要那组括号来告诉计算机它应该用n
指数化1+p/100
,因为^
的优先级高于/
,否则它会计算100^n
教师版有一对多余的括号。这里不需要外括号
所以你明确地告诉了计算机所有这些括号的操作的优先级。但这是没有必要的,因为它已经知道了这一点。如果要更改默认优先级,请使用括号。就像你用笔和纸做数学一样。非常感谢!
version = A * (1 + (p / 100)) ^ n)
version = A * (1 + p / 100) ^ n