[英]Python Operators: Math Precedence Comparison operators vs equality operators
[英]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
不是运营商的优先权
*
/
它应该给出相同的答案吗?
抱歉,如果我在这里遗漏了什么。
谢谢你的帮助!
所以编译器执行像常规数学一样的操作。 这些括号为操作添加了优先级。 因此,编译器在这些情况下要做的第一件事是首先计算括号之间的内容,因此对于第一行,它将以这种方式计算:
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.