如何在Ironpython中打印除法结果?
我想打印出 'x/y' 的结果,但它总是返回 '0'。当我打印 'x' 的时候,它显示得很正确,当我打印 'y' 的时候,也显示得很正确,但当我打印 'x/y' 的时候,它却显示为 0。
这是我的代码:
import random
y = 0
x = 0
p = 1
while True:
i = [random.randint(1,100), random.randint(1,100), random.randint(1,100), random.randint(1,100), random.randint(1,100)]
if len(set(i)) < len(i):
print "Match!"
x += 1
y += 1
print(x/y)
else:
print "No Match!"
y += 1
print y
就像我说的,当需要打印 y
的时候,它能正确打印,但在需要打印 x/y
的时候,它却打印出 0
。我还试过打印 x/y
和 x//y
,但它们也不行。
我到底哪里出错了?
提前谢谢你们!
4 个回答
4
我觉得有必要指出这个PEP中最相关的部分:
正确的解决方法比较微妙:如果一个参数可能是复数,直接把它转换成float()是不对的;如果你在一个参数上加上0.0,且这个参数是负零的话,它的符号就会变得不对。唯一没有这些缺点的解决方案是把一个参数(通常是第一个)乘以1.0。这样做可以保持值和符号不变,对于float和复数来说都是如此,而对于int和long来说,它会变成对应值的float。
所以,你可以这样做:
print 1.0 * x / y
5
6
如果 x 和 y 都是整数,Python 会进行整数除法。所以如果结果是 0.某个小数,Python 就会显示 0。
如果你想要得到小数结果,就需要把它们转换成浮点数:
print float(x) / float(y)
或者使用 Decimal
对象:
from decimal import Decimal
print Decimal(x) / Decimal(y)