首页 > 解决方案 > Python数学问题我的结果非常接近示例但机器人相同

问题描述

根据使用下面公式输入的 x 值编写计算 y 值的程序的代码。

           1
    ---------------
            1
    x + ----------
              1
       x + ------
             1
        x + ---
             2

例如:

If x = 1, y = 0.6000000000000001
If x = 10 y = 0.09901951266867294
If x = 100 y = 0.009999000199950014
If x = -5 y = -0.19258202567760344

我的代码

x = float(input("x= "))
y = (1.0/(x+(1.0/(x+(1.0/(x+0.5))))))
print(y)

我的结果

x= 1 y= 0.625
x= 10 y= 0.09901914992993928
x= 100 y= 0.009999000199462694
x= -5 y= -0.19262295081967212

我不知道我哪里做错了。结果如此接近。

标签: python

解决方案


那是因为不是每个数字都可以表示为浮点数。例如,十进制中的 0.2 具有有限的位数,但在二进制中则没有(如十进制中的 1/3)。要对浮点变量进行非常精确的运算,您可以使用十进制浮点,它的工作原理更像是十进制而不是二进制。

浮点错误: https ://en.wikipedia.org/wiki/Floating-point_error_mitigation

十进制浮点数: https ://en.wikipedia.org/wiki/Decimal_floating_point https://docs.python.org/2/library/decimal.html


推荐阅读