检查数字是否在半个数字的1/1000之内(0,0.5,1)

时间:2015-02-27 01:04:21

标签: python

所以我正在学习编程期中考试,其中一个科目正在分析用户输入的数字。 例如。用户输入X.程序告诉X是否在半个数字的1/1000之内(...- 1,-0.5,0,0.5,1 ...)并给出它最接近的数字。 I.E. 输入(1.50001)1.50001接近1.5 有没有办法以比我想要在下面实现的更简单的方式做到这一点?

N = input("Enter a number: ")
num = float(N)
x = float(N) % 2
print("remainder: ", x)
if x > 1:
    num = float(N) - x
    x = x - 1
if x > float(0.4) and x < float(0.9):
    num = float(N) + x
    x = abs(x - 0.5)
if x < float(1/1000):
    print("Your number: ", x , " is a near half with ", num)

对不起,如果这看起来像一个愚蠢的问题。我似乎无法为这样的事情想出一个好的算法。

1 个答案:

答案 0 :(得分:2)

num = float(input("Enter a number: "))

# clip err to [-0.25 .. 0.25)
err = ((num + 0.25) % 0.5) - 0.25

if abs(err) < 0.001:
    print("{} is within 0.001 of {}".format(num, num - err))

一样运行
Enter a number: 1.50003
1.50003 is within 0.001 of 1.5