如何';打印';Ironpython(Python.net)中除法的结果是什么?
我需要打印“x/y”的结果,但它总是返回“0”。当我打印“x”时,它告诉我正确,当我打印“y”时,它告诉我正确,但当我打印“x/y”时,它说0 这是我的密码:如何';打印';Ironpython(Python.net)中除法的结果是什么?,python,printing,random,ironpython,division,Python,Printing,Random,Ironpython,Division,我需要打印“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,1
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=0
x=0
p=1
尽管如此:
i=[random.randint(1100),random.randint(1100),random.randint(1100),random.randint(1100),random.randint(1100)]
如果len(set(i))
就像我说的,它在应该打印时打印y
很好,但是在需要打印x/y
的事件中,它打印0
。我也试过打印x/y
和打印x//y
,但它们都不起作用
我做错了什么
提前感谢如果x和y都是整数,Python总是进行整数除法。因此,如果结果是0.something,Python将显示0 如果要进行浮点除法,需要将其转换为浮点:
print float(x) / float(y)
或Decimal
对象:
from decimal import Decimal
print Decimal(x) / Decimal(y)
尝试:
整数除法总是截断小数
还要注意的是,实际上只有分子需要是一个浮点数,但最好明确说明你在做什么。这样做
from __future__ import division
读这个
我认为指出政治公众人物中与此最相关的部分可能是有用的: 正确的解决方法是微妙的:如果可能是复数,则将参数强制转换为float()是错误的;如果参数为负0,则将0.0添加到参数不会保留该参数的符号。唯一没有任何缺点的解决方案是将一个参数(通常是第一个)乘以1.0。这使得float和complex的值和符号保持不变,并将int和long转换为具有相应值的float 因此,您可以:
print 1.0 * x / y
是
x
?如果是这样,x/y
必须为零。是的,x
总是小于y
,但我甚至尝试了x//y
,如果我读得正确,它将返回十进制值而不是整数值,但返回0的值也x//y
返回整数值。你在哪里读到它返回一个十进制值?那是完全错误的。你读过除法吗?我读过除法,它说的是真除法和其他除法,默认情况下,/
是整数除法,但/
是十进制除法或其他除法。。。也许我误解了,我很确定只要你把分母转换成一个浮点数,就足以得到你想要的结果。例如浮动(x)/浮动(y)=x/浮动(y)
print 1.0 * x / y