在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