之间是不同的,我很新的Python的所以我可能错过了一些细微的差别,但我不明白为什么下面的计算产生不同的值:计算结果的Excel和Python
n: 0.00167322032899
的Excel
(15/8) * n^2
5.24937425502263E-06
的Python
(15/8) * n ** 2
2.79966626935e-06
我在复制Python的结果做了一些尝试Excel支架使用但无济于事。任何指导?
之间是不同的,我很新的Python的所以我可能错过了一些细微的差别,但我不明白为什么下面的计算产生不同的值:计算结果的Excel和Python
n: 0.00167322032899
的Excel
(15/8) * n^2
5.24937425502263E-06
的Python
(15/8) * n ** 2
2.79966626935e-06
我在复制Python的结果做了一些尝试Excel支架使用但无济于事。任何指导?
默认情况下,Python 2.x中的分区是整数除法。
>>> (15./8) * 0.00167322032899 ** 2
5.2493742550226314e-06
>>> from __future__ import division
>>> (15/8) * 0.00167322032899 ** 2
5.2493742550226314e-06
在python中,15/8等于1,而在Excel中,它将等于1.875。 Python 2将15和8视为整数,因此会执行整数除法。你可以尝试:
(15.0/8) * n ** 2
或(15/8.0) * n ** 2
哪会给你5.249374255022632e-06
。
在Python(python2)中做15/8
做整数除法。所以,你得到1
,而Excel的计算,要1.875
我想你想的一小部分,所以在Python中使用15.0/8
(或15/8.0
或15.0/8.0
)来强制的一小部分,而不是整数除法
Python 2中返回一个整数整数除法,不是float/double。所以你需要做'(15.0/8)* n^2',所以它知道返回一个浮点值。 – Dan
@zerk只有Python2表现这种方式,而不是Python3。 –
整数除法不是唯一必须小心的事情。考虑到'0.1 + 0.1 + 0.1 == 0.3'返回'False',并且'056 == 56'也评估'False'。原因是不同于你的问题,但是你也必须小心编程:) –