Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.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
Lua中括号的位置(操作顺序)_Lua - Fatal编程技术网

Lua中括号的位置(操作顺序)

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

我试图找出下面公式中的运算顺序

我用这个脚本计算并显示三年后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) ^ 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