我想在python中转换1/2,这样当我说打印x(其中x = 1/2)时它返回0.5
我正在寻找最基本的方法,而不使用任何拆分函数,循环或映射
我试过漂浮(1/2),但我得到0 ...... 有人能解释我为什么以及如何解决它?
是否可以在不修改变量x = 1/2 ??
的情况下执行此操作由于
答案 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。