繁体   English   中英

函数的MinMax算法无法按预期工作

[英]Algorithm for MinMax of a function doesn't work as intended

我只是开始编码以帮助我的儿子,我起草了几行代码以在确定的时间间隔内获得函数的Min Max。 但是,显示的最小值不是整数,我不知道为什么...这是代码:

a=float(input("Valeur de a ?"))
b=float(input("Valeur de b ?"))
pas=float(input("Valeur du pas ?"))
val_max=a**2
val_min=a**2
while a<b+pas:
    if a**2>val_max:
        val_max=a**2
    if a*2<val_min:
        val_min=a**2
    a=a+pas
print("Maximum :",val_max)
print("Minimum :",val_min)

这是输出:

Valeur de a?-4

Valeur de b?3

Valeur du pas?0.1最大值:16.0最小值:5.830945499626795e-30

为什么最小值不为0,而不是5.8 ^ -30?

这是因为从未测试过将​​使min = 0的值a = 0。 当您输入0.1作为pas的值时,它将转换为二进制表示形式,但是1/10等于0.000110011001100110011001100110011 ...的二进制形式。 该程序将其四舍五入为0.000110011001100110011,即.099999904632568359375。 这样,您永远不会精确地落在零,也不会获得最小的期望值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM