2011-02-27 58 views
3

有人可以告訴我爲什麼下面提到的代碼的輸出是負的零?乘法結果爲負零

A * B = -0

這裏 'a' 是長型的,b爲十進制類的對象.....和如果α= -28和b = 0,則輸出爲-0

回答

7

從Python decimal文檔:可導致 計算下溢

簽署的零。他們保留 的標誌,如果 計算已執行 將導致更高的精度。由於它們的數量級爲零,所以正數和負數零被視爲等於 ,並且它們的符號是信息性的。

+0

推薦的方式是處理這樣的結果,這些結果實際上是0,但有這些「額外」信息?就像我想在面向用戶的輸出 – Bodhi 2012-09-18 22:18:46

+0

@Bodhi中使用這些,我不太清楚你的意思。如果你問什麼信息提供給用戶,恐怕只有你可以決定。但是也許你在問如何以不需要解析字符串表示的方式獲取信息?爲此,'as_tuple'方法很好:'repr(decimal.Decimal(' - 0')。as_tuple())'outputs''DecimalTuple(sign = 1,digits =(0,),exponent = 0') ',其中'DecimalTuple'是一個自定義'namedtuple'。對於正數'Decimal'對象,'sign = 0';爲負數,'sign = 1'。所以'decimal.Decimal(' - 0')。as_tuple()。sign == 1'。 – senderle 2012-09-18 23:32:57