2017-08-29 115 views
2

之间是不同的,我很新的Python的所以我可能错过了一些细微的差别,但我不明白为什么下面的计算产生不同的值:计算结果的Excel和Python

n: 0.00167322032899 

的Excel

(15/8) * n^2 
5.24937425502263E-06 

的Python

(15/8) * n ** 2 
2.79966626935e-06 

我在复制Python的结果做了一些尝试Excel支架使用但无济于事。任何指导?

+4

Python 2中返回一个整数整数除法,不是float/double。所以你需要做'(15.0/8)* n^2',所以它知道返回一个浮点值。 – Dan

+1

@zerk只有Python2表现这种方式,而不是Python3。 –

+0

整数除法不是唯一必须小心的事情。考虑到'0.1 + 0.1 + 0.1 == 0.3'返回'False',并且'056 == 56'也评估'False'。原因是不同于你的问题,但是你也必须小心编程:) –

回答

9

默认情况下,Python 2.x中的分区是整数除法。

>>> (15./8) * 0.00167322032899 ** 2 
5.2493742550226314e-06 
>>> from __future__ import division 
>>> (15/8) * 0.00167322032899 ** 2 
5.2493742550226314e-06 
4

在python中,15/8等于1,而在Excel中,它将等于1.875。 Python 2将15和8视为整数,因此会执行整数除法。你可以尝试:

(15.0/8) * n ** 2(15/8.0) * n ** 2哪会给你5.249374255022632e-06

3

在Python(python2)中做15/8做整数除法。所以,你得到1,而Excel的计算,要1.875

我想你想的一小部分,所以在Python中使用15.0/8(或15/8.015.0/8.0)来强制的一小部分,而不是整数除法