如何从Python数学函数获取小数?
我刚接触Python,有点搞不清楚自己哪里出错了。
a = 9
b = 13
print ((a-b)/a)
-1
但是在我的计算器上,正确的答案是-0.444444444(这意味着'a'比'b'低大约45%)。我该怎么才能显示出几位小数呢?
我试过
print Decimal((a-b)/a)
print float((a-b)/a)
结果都是一样的。如果我把a设为9.0就可以正常工作,但我想看看有没有什么方法可以不改变变量的情况下解决这个问题。
我知道这应该很简单,但我不知道该试什么。有什么建议吗?
谢谢
3 个回答
2
你在用两个整数进行除法运算,在Python 2.x中,这意味着进行的是整数除法。也就是说,结果会是一个整数。
如果你想要的是浮点数除法,也就是结果可以是小数,你只需要确保至少有一个参与除法的数是浮点数。比如:
print ((a-b)/float(a))
或者
print (float(a-b)/a)
4
试着把其中一个(或者两个)参数转换成浮点数,而不是转换结果:
print ((a-b)/float(a))
或者直接升级到Python 3,这个问题在那儿已经修复了:
>>> a = 9
>>> b = 13
>>> print ((a-b)/a)
-0.4444444444444444
顺便说一下,如果你想要在Python 3.x中进行整数除法,可以用//
代替/
。如果你感兴趣,可以查看关于这个变化的PEP。
2
你需要说明你想要处理的是浮点数。
比如说:3.0/4.0
或者直接用 3.0/4
,这样就会得到浮点数。现在你写的代码只是在做整数运算。
补充一下:你也可以用 float(3)/4
这种写法。