2010-01-04 48 views
-6
import decimal        # Decimals 
a=decimal.getcontext().copy() 
print a 

什麼是有用的。'decimal.getcontext()。copy()'是什麼意思

+6

hm。屬於variableoverflow.com – moritz 2010-01-04 06:23:58

+16

@ zjm1126,您的個人資料要求我們用'code'而不是說明來回答,並且我注意到您的問題通常採用代碼片段的形式。現在,經過60多個問題,我們可以看到你只希望僅僅複製代碼而不理解它*。這不是編程的方式。你應該花時間學習和理解編程語言,然後才能期望編程。我意識到編程期望你熟悉英語,這可能是一個問題。對此我們無能爲力。 **你必須學習它,恐怕。祝你好運。 – pavium 2010-01-04 06:38:21

+1

非常感謝,我會努力。 – zjm1126 2010-01-04 07:13:31

回答

4

雖然我同意這裏的其他許多評論,但我認爲我會投入一塊骨頭。

decimal模塊是一種用於對任意精度數進行運算的實用程序。這在一些科學環境中用於計算遇到舍入誤差的事物。經典的例子是計算pi的第9999位。你不能用浮動來做到這一點。

小數庫使用「上下文」的概念來決定你真正想要的精度。由於您想要的精度越高,計算運行速度越慢。 decimal.getcontext()部分返回默認上下文。但是通過一個瘋狂的「陷阱」(我實際上已經成爲獵物),這實際上只是一個指針。因此,如果您要更改decimal.setcontext('foo')的上下文,您實際上也會更改a。手動模塊有一個.copy()方法。

原始程序員可能是這樣做的,以保存上下文的副本供以後使用。也許他/她想以較低的精度執行部分計算以節省時間,然後想要以更高的精度執行困難的部分。

雖然蟒蛇> 2.5,這是最好的像一個上下文管理器完成「與」

from decimal import localcontext 

with localcontext() as ctx: 
    ctx.prec -= 5 # Perform a low precision calculation 
    s = calculate_something() 
s = +s # Round the final result back to the default precision 

但是,如果沒有相關的代碼的其餘部分我的猜測是沒有比你更好。

儘管我已經使用了十進制模塊,但在python文檔here中很容易找到所有這些。試着去那裏,先找到這樣的問題......如果你能弄明白自己,你會記得更久。當你回答問題時,你會感受到我們其他人的感受。

+0

@JudoWill,我認爲你的答案的「代碼」部分*最令人印象深刻。想想看。 – pavium 2010-01-04 10:11:15

+0

@pavium,我不能分辨你的表情是否刻薄或嚴肅。 – JudoWill 2010-01-04 10:55:56

+3

@JudoWill:這裏的基本問題是@ zjm1126正在閱讀的東西很少,如果我們寫的東西,因此@pavium上面提到,根本就沒有學習如何幫助自己。我們可以繼續捐贈代碼片段,但我們正在浪費OP的時間和我們的時間。在獲得散文迴應之前,他確實需要學習更多英語。 – bernie 2010-01-04 17:07:23

3

一個是可變的,你可以很容易地已經把

import decimal        # Decimals 
print decimal.getcontext().copy() 

要刪除提及a

1

我想答案是,在這個特殊的情況下,也是沒有名字目的

然而,在事更大的計劃,如果你需要使用的

a=decimal.getcontext().copy() 
值0

,那麼你不想重新計算它,因爲這個函數可能會改變,或者它可能是一個昂貴的操作。

7

我回答假設一個新手。

「a」是一個變量。變量是一個邏輯單元,它在執行程序時在計算機內存上保存一個值/字符串等。例如,如果要添加1和2並獲得答案,則應在內存中創建一個「變量」,例如「a」,並將「+1」的值指定爲1 + 2。

在此代碼中,已經導入了一個名爲decimal的庫。它包含一組操作或方法。然後你對它執行一些操作並將輸出分配給一個名爲「a」的變量。然後你試圖把它打印到控制檯。

N.B:你不應該使用像a,b這樣的變量名。這不是一個好習慣。你應該使用一個有意義的詞。