所以我试图编写一个以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)
。
知道我做错了什么吗?谢谢!
答案 0 :(得分:3)
您正在运行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)