2010-06-26 96 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