簡體   English   中英

為什么運行python解釋器和python代碼之間的結果不同?

[英]why the result is different between running python interpreter and python code?

我在python解釋器上創建了一個簡單的代碼並運行它。

Python 3.5.3 (v3.5.3:1880cb95a742, Jan 16 2017, 16:02:32) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> x=np.array([0,1])
>>> w=np.array([0.5,0.5])
>>> b=-0.7
>>> np.sum(w*x)+b
-0.19999999999999996

結果-0.19999999999999996很奇怪。 我認為......它是由IEEE 754規則引起的。 但是當我嘗試按文件運行幾乎相同的代碼時,結果會有很大不同。

import numpy as np
x = np.array([0,1])
w = np.array([0.5,0.5])
b = -0.7
print(np.sum(w * x) + b)

結果是“-0.2”。 IEEE 754規則不會影響結果。

基於文件的運行和基於解釋器的運行有什么區別?

差異是由於解釋器如何顯示輸出。

print函數將嘗試使用對象的__str__方法,但解釋器將使用對象的__repr__

如果你在翻譯中寫道:

...
z = np.sum(w*x)+b
print(z)

(這是你在代碼中所做的)你會看到-0.2

同樣,如果在您的代碼中,您寫道:

print(repr(np.sum(w * x) + b))

(這是你在翻譯中所做的)你會看到-0.19999999999999996

我認為不同之處在於,您使用print()作為基於文件的代碼(轉換數字),而在解釋器的情況下,您不使用print() ,而是要求解釋器顯示結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM