繁体   English   中英

Python 数学模块运算符优先级不正确?

[英]Python Math Module Operators Precedence Incorrect?

我是使用 python 编程的新手并搜索了这个问题,以为有解释,但找不到。

为什么这样: math.log(0.05/(2*0.000001),10)

#输出 4.3979400086720375

与此不同: math.log(0.05/2*0.000001,10)

#输出-7.602059991327962

不是运营商的优先权

  1. *
  2. /

它应该给出相同的答案吗?

抱歉,如果我在这里遗漏了什么。

谢谢你的帮助!

所以编译器执行像常规数学一样的操作。 这些括号为操作添加了优先级。 因此,编译器在这些情况下要做的第一件事是首先计算括号之间的内容,因此对于第一行,它将以这种方式计算:

math.log(0.05/ (2*0.000001) , 10) ==> math.log( 0.05/(0.000002) , 10) ==> math.log(25000, 10) ==> 4.3979400086720375

对于第二个,它将是第一个操作,因为乘法和除法具有相同的优先级顺序。 math.log( 0.05/2 * 0.000001,10) ==> math.log( 0.1*0.000001 , 10) ==> math.log(0.0000001, 10) ==> 7.602059991327962

我用粗体表示将在每个步骤中发生的操作。

math.log(0.05/(2*0.000001),10)这有 OUTPUT 4.3979400086720375因为你使用 () 乘以2*0.000001这个。 因此,根据简化数学的基本规则,即Bracket of division multiplication addition subtraction BODMAS括号

代码首先将括号()部分相乘,然后进行除法。

在第二个math.log(0.05/2*0.000001,10)中,它们没有使用()所以它首先进行除法运算,然后乘以0.000001

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM