Crossin的编程教室
标题:
【求助】round的四舍五入在(0+1)/2是取1还是0
[打印本页]
作者:
zhangboran
时间:
2019-1-20 18:19
标题:
【求助】round的四舍五入在(0+1)/2是取1还是0
我按照前面的课做的一个猜数字的程序
其中有一项是把猜的数字范围的上限和下限做修改,就是设定x,y两个值,然后确定范围x = 0, y = 100。之后再根据每次猜测的大小,不断调整x,y的取值进而不断调整猜测范围。
理论上来说,当电脑设定的数为0的时候我的程序应该永远都猜不到才对。因为取值为0, 猜1 的时候得到反馈数值过大,然后y调整为1,于是再次猜测的时候就应该是(0+1)/2=0.5,然后round之后得出1。再然后y依旧等于1,然后继续(0+1)/2=1.这样一直循环下去。但是实际去试的时候并没有出现上述的循环情况,而是真的猜到了0。那这个四舍五入是什么情况?
代码如下
from random import randint
q = 0
p = 100
num = 0
print('The asked number is', num)
print('guess what is the number')
ans = randint(q,p)
print('the number is', ans)
x = q
y = p
while ans != num:
if ans < num:
print('too small')
k = (y+ans)/2
k = round(k)
k=int(k)
x = ans
ans = k
else:
print('too big')
w = (x+ans)/2
w = round(w)
w=int(w)
y = ans
ans = w
print('the number is', ans)
print('x is', x, 'y is', y)
print('bingo')
作者:
TED
时间:
2019-1-21 14:52
python2里round(0.5)是1,而python3里round(0.5)是0
参考链接:
https://www.cnblogs.com/anpengapple/p/6507271.html
作者:
crossin先生
时间:
2019-1-21 22:35
这与python的浮点数表示方式有关,所以 round 不能用来精确计算。
这里有个简单的解决方法
https://www.jianshu.com/p/5c3774f2e06e
欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/)
Powered by Discuz! X2.5