因此,我试图对一个使用5位数字进行运算的计算器进行编程,然后检查其间隔.这是代码:
def CR5(x):
x=float('%s' % float('%.5g' % x))
x="{:.4e}".format(x)
return x
这似乎工作得很好,除了答案是字符串形式,但这在现阶段不是问题.但是,当我尝试检查时间间隔时,得到以下信息:
码:
def interval(x):
x=float(CR5(x))
a=x-1
b=x+1
while float(CR5(a))!= x:
a=float(CR5((a+x)/2))
while float(CR5(b))!= x:
b=float(CR5((b+x)/2))
return a, b
x == 4时的结果:
(4.0, 4.0)
而我尝试获取(3.9999,4.0001).
知道我做错了什么吗?谢谢!
解决方法:
您正在运行while循环,直到a和x相等为止,而实际上您正在寻找中间值等于x的情况.您应该这样编写循环:
while float(CR5((a+x)/2.0))!= x:
和
while float(CR5((b+x)/2.0))!= x:
x = 4的结果:
(3.9999, 4.0001)