Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检查数字是否在半位数(0,0.5,1)的千分之一以内_Python - Fatal编程技术网

Python 检查数字是否在半位数(0,0.5,1)的千分之一以内

Python 检查数字是否在半位数(0,0.5,1)的千分之一以内,python,Python,所以我正在学习一个编程期中考试,其中一个科目是分析用户输入的数字。 例如用户输入X。程序告诉您X是否在半位数的1/1000以内(…-1,-0.5,0,0.5,1…),并给出最接近的数字。 即。 输入(1.50001)1.50001接近1.5 有没有一种方法可以比我在下面尝试实现的方式更简单 N = input("Enter a number: ") num = float(N) x = float(N) % 2 print("remainder: ", x) if x > 1: n

所以我正在学习一个编程期中考试,其中一个科目是分析用户输入的数字。 例如用户输入X。程序告诉您X是否在半位数的1/1000以内(…-1,-0.5,0,0.5,1…),并给出最接近的数字。 即。 输入(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)
N=输入(“输入一个数字:”)
num=浮点(N)
x=浮动(N)%2
打印(“余数:”,x)
如果x>1:
num=浮点(N)-x
x=x-1
如果x>浮动(0.4)和x<浮动(0.9):
num=浮点(N)+x
x=绝对值(x-0.5)
如果x<浮动(1/1000):
打印(“您的号码:”,x,“是带“,”num的近一半)

抱歉,如果这是个愚蠢的问题。我似乎想不出一个好的算法来处理这样的事情。

从来没有意识到你可以对非整数的bOh wow做
a%b
,这太简单了。我知道我想得太多了,这是一种用更少的行数来完成它的方法。谢谢
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