2011-01-30 39 views
8

我想转换1/2蟒蛇所以,当我说打印X(其中x = 1/2)返回0.5Python的转换分数为十进制

我要寻找这样做的最基本的方法,没有使用任何拆分功能,循环或地图

我试过浮法(1/2),但我得到0 ... 有人可以解释我为什么以及如何解决它?

是否有可能做到这一点,而无需修改变量x = 1/2?

感谢

+0

你能否解释越多,你的意思是用'不修改变量x = 1/2`? – eat 2011-01-30 10:59:59

+0

作为你正在参加的课程的一部分,这是一个诡计问题吗?如果是这样,请将其标记为[作业]。 – 2011-01-30 13:04:07

回答

23

在Python 3.x任何部分返回一个浮点数;

>>> 1/2 
0.5 

以实现在Python 2.x中,你必须强制浮充转换:

>>> 1.0/2 
0.5 

或从 “未来”

>>> from __future__ import division 
>>> 1/2 
0.5 

一个额外的导入师:没有内置分数类型,但在官方库中有:

>>> from fractions import Fraction 
>>> a = Fraction(1, 2) #or Fraction('1/2') 
>>> a 
Fraction(1, 2) 
>>> print a 
1/2 
>>> float(a) 
0.5 

等等...

7

你可能正在使用Python 2.你可以“修复”师使用:

from __future__ import division 

在脚本的开始(在任何其他进口)。默认情况下,在Python 2中,/运算符在使用整数操作数时执行整数除法操作,舍弃结果的小数部分。

这已在Python 3中进行了更改,因此/始终是浮点除法。新的//运算符执行整数除法。

+0

我不能把它放在一个函数中..它给我一个错误,说该行必须放在文件的开始处.. – Kartik 2011-01-30 07:38:20

6

或者,您可以通过指定小数或乘以1.0来强制进行浮点除法。例如(从Python解释器):

>>> print 1/2 
0 
>>> print 1./2 
0.5 
>>> x = 1/2 
>>> print x 
0 
>>> x = 1./2 
>>> print x 
0.5 
>>> x = 1.0 * 1/2 
>>> print x 
0.5 

编辑:看来我被打在了它输入了我的反应:)

3

没有数量1/2任何地方的时间一拳。 Python不能用内置类型表示有理数 - 只是整数和浮点数。 1除以2 - 遵循整数除法规则 - 产生0. float(0)为0.

3

如果输入的是一个字符串,那么你可以直接输入用分数:

from fractions import Fraction 

x='1/2' 
x=Fraction(x) #change the type of x from string to Fraction 
x=float(x)  #change the type of x from Fraction to float 
print x 
相关问题