重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
【造成这个问题的原因分析】:在计算机中,所有的数都是二进制保存,十进制的小数在和二进制数字相互转化的时候,就会出现误差,也就是浮点数的精确度。由于浮点数的精确度不可能完全精准,所以出现这样的情况在所难免。所以会出现问题的截图中所示的状态。
创新互联公司2013年成立,先为城中等服务建站,城中等地企业,进行企业商务咨询服务。为城中企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
【解决方法】:可以通过将小数减法变为整数减法降低误差。如下图所示:
我课程中的部分代码(除没写):
def f_add(a,b):
return a+b
def f_mul(a,b):
return a*b
def f_sub(a,b):
return a-b
def g1(f,a,b):
return f(a,b)
a,b,c,d = 1,2,3,4
print g1(f_sub, g1(f_mul, g1(f_add,a,b), c), d), g1(f_mul, g1(f_add,a,b), g1(f_sub,c, d))
对python感兴趣可以到这里了解一下:
study.163.com/course/courseMain.htm?courseId=1000035
import random
max_n = 100
i = 0
while True:
i += 1
# 随机运算,0+,1-
op = random.randint(0, 1)
# +
if op == 0:
x1 = random.randint(0, max_n)
x2 = random.randint(0, max_n - x1)
result = x1 + x2
qst = str(x1) + "+" + str(x2) + "="
question = [qst, result]
# -
elif op == 1:
x1 = random.randint(0, max_n)
x2 = random.randint(0, x1)
result = x1 - x2
qst = str(x1) + "-" + str(x2) + "="
question = [qst, result]
x = input("第{:2d}题:{}".format(i + 1, question[0]))
if int(x) == int(question[1]):
print("回答正确!")
else:
print("回答错误!{}{}".format(question[0], question[1]))
def add(a,b):#加法运算return a+bdef sub(a,b):#减法运算return a-bdef mul(a,b):#乘法运算return a*bdef div(a,b=1):#除法运算return a/b