2010-06-26 90 views
5

在IronPython中,有什麼方法可以強制將包含整數值的表達式計算爲浮點數。舉例來說,我想表達強制浮點計算

1/3 

被作爲

1./3. 

與結果評估0.333 ...

我需要這個做一個簡單的運行時間表達式計算器在一個C#項目中通過IronPython的方式。我無法強制用戶輸入帶有小數點後的表達式。

+0

您使用的這些表達式'eval'? (如果沒有,好 - 這是一種不安全的方式來實現一個計算器) – 2010-06-26 19:23:52

回答

11

您可以強制浮點除法像任何一個,不管是否有任何從__future__進口:

print val1/(val2 + 0.0) 
print (val1 + 0.0)/val2 
print float(val1)/val2 
print val1/float(val2) 
+0

太棒了!這正是我需要的。不幸的是,我無法將所有正確的答案標記爲已接受。所以我會給大家+1,接受這個。 – Max 2010-06-26 19:23:37

2

如果您的用戶無論如何都輸入了數值,那麼您可能將數值轉換爲int s。所以簡單地將它們轉換爲float

val1 = float(raw_input()) 
val2 = float(raw_input()) 
print val1/val2 
11
from __future__ import division 

print 1/3 
print 1 // 3 
+0

打了我一秒鐘左右。 +1 – None 2010-06-26 19:18:40

+0

由於你是正確的,我拒絕downvote,但事實上,Python人決定改變一個基本的算術運算符的語義,因爲很多人已經寫了這麼多的代碼 - 它似乎仍然對我來說很瘋狂。我不知道IronPython跟蹤Python版本有多好,但是當他們從Python 2移動到Python 3時,這個令人討厭的驚喜將會發生。許多精確定義的舍入行爲的計算無疑將悄悄地破壞,所以可信的應用程序會給出錯誤的結果 – Steve314 2010-06-26 19:31:18

+0

@ Steve314:而且? Python 3並不新鮮。如果第三方文檔不是最新的,那麼Python開發人員就可以做到這一點。 – 2010-06-26 19:42:04