2017-08-29 116 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)來強制的一小部分,而不是整數除法