在IronPython中,有什麼方法可以強制將包含整數值的表達式計算爲浮點數。舉例來說,我想表達強制浮點計算
1/3
被作爲
1./3.
與結果評估0.333 ...
我需要這個做一個簡單的運行時間表達式計算器在一個C#項目中通過IronPython的方式。我無法強制用戶輸入帶有小數點後的表達式。
在IronPython中,有什麼方法可以強制將包含整數值的表達式計算爲浮點數。舉例來說,我想表達強制浮點計算
1/3
被作爲
1./3.
與結果評估0.333 ...
我需要這個做一個簡單的運行時間表達式計算器在一個C#項目中通過IronPython的方式。我無法強制用戶輸入帶有小數點後的表達式。
您可以強制浮點除法像任何一個,不管是否有任何從__future__
進口:
print val1/(val2 + 0.0)
print (val1 + 0.0)/val2
print float(val1)/val2
print val1/float(val2)
太棒了!這正是我需要的。不幸的是,我無法將所有正確的答案標記爲已接受。所以我會給大家+1,接受這個。 – Max 2010-06-26 19:23:37
如果您的用戶無論如何都輸入了數值,那麼您可能將數值轉換爲int
s。所以簡單地將它們轉換爲float
。
val1 = float(raw_input())
val2 = float(raw_input())
print val1/val2
from __future__ import division
print 1/3
print 1 // 3
打了我一秒鐘左右。 +1 – None 2010-06-26 19:18:40
由於你是正確的,我拒絕downvote,但事實上,Python人決定改變一個基本的算術運算符的語義,因爲很多人已經寫了這麼多的代碼 - 它似乎仍然對我來說很瘋狂。我不知道IronPython跟蹤Python版本有多好,但是當他們從Python 2移動到Python 3時,這個令人討厭的驚喜將會發生。許多精確定義的舍入行爲的計算無疑將悄悄地破壞,所以可信的應用程序會給出錯誤的結果 – Steve314 2010-06-26 19:31:18
@ Steve314:而且? Python 3並不新鮮。如果第三方文檔不是最新的,那麼Python開發人員就可以做到這一點。 – 2010-06-26 19:42:04
您使用的這些表達式'eval'? (如果沒有,好 - 這是一種不安全的方式來實現一個計算器) – 2010-06-26 19:23:52