2013-02-11 51 views
0

展望格式化輸出,顯示一個非常小的數目..格式化字符串微秒

a= 6500 
b= 3600 
c=.000900 
d= int((b/a)-c) 
print d 

回答出來是零,但尋找。之後######號碼。

對不起,試試這個

+0

當我打印'D',我得到'-0.0009'(python2.x) - 這將是對的,因爲真正的分python3.x不同的(我想你可能想在這裏)。 – mgilson 2013-02-11 02:02:09

+1

你的編輯添加了'int',但你說你想要小數部分的計算。這看起來不一致,因爲'int'會明確拋棄這些部分! – Blckknght 2013-02-11 02:11:41

回答

0

看起來你在python 2.x中被整數除法了。

>>> a= 6500 
>>> b= 3600 
>>> c=.000900 
>>> from __future__ import division 
>>> print b/a - c 
0.552946153846 
0

可能有兩個問題與你的計算:

如果你使用的是Python 2,使用整數/兩者之間的分工將永遠是一個整數也。這將丟棄計算的小數部分,這可能是意想不到的。一個解決方法是強制其中一個值爲float值(例如float(b)/a)。另一種方法是放在文件from __future__ import division的頂部,該文件告訴Python使用Python 3語義進行除法(如果結果是精確整數,則只會從整數除法中得到一個整數)。

第二個問題似乎是關於格式化浮點值。首先你似乎只想要小數部分的值(不是整數部分)。通常情況下,最好的選擇是簡單地減去值的整數部分:

d = someFloatingPointValue() 
d_frac = d - int(d) 

下,得到一個字符串輸出(您想幾位小數,但他們不是一個巨大的數字),你可能想探索Python的字符串格式化操作:

d = someFloatingPointValue() 
d_to4decimalPlaces = "{:.4f}".format(d)