Python将分数转换为十进制

时间:2011-01-30 07:33:28

标签: python

我想在python中转换1/2,这样当我说打印x(其中x = 1/2)时它返回0.5

我正在寻找最基本的方法,而不使用任何拆分函数,循环或映射

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

是否可以在不修改变量x = 1/2 ??

的情况下执行此操作

由于

5 个答案:

答案 0 :(得分:25)

在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

依旧......

答案 1 :(得分:7)

您可能正在使用Python 2.您可以使用以下命令“修复”除法:

from __future__ import division

在脚本开头(在任何其他导入之前)。默认情况下,在Python 2中,/运算符在使用整数操作数时执行整数除法,这会丢弃结果的小数部分。

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

答案 2 :(得分: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 :(得分:6)

如果输入是字符串,那么您可以直接在输入上使用Fraction:

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

答案 4 :(得分:3)

任何地方都没有数量1/2。 Python不代表具有内置类型的有理数 - 只是整数和浮点数。 1除以2 - 遵循整数除法规则 - 得到0. float(0)为0。