2024-04-24 14:43:28 发布
网友
我写了一个程序来检查和打印一个数字是整数还是浮点数,它通常工作得很好。 但是当我尝试2.0000000000000001这样的值时,我得到的消息是它是一个整数,为什么?你知道吗
代码:
import math number = float(input("Enter a number: ")) if number == round(number): print("Integer number") else: print("Float number")
你不是在检查它是float,还是integer,你是在检查number是否等于round(number),而且由于浮点数存储的不精确性,它们对于如此小的差异是相等的。 如果要检查它是integer还是float,请尝试以下操作:
float
integer
number
round(number)
number = float(input("Enter a number: ")) if type(number) == int: print("Integer number") elif type(number) == float: print("Float number")
当然,这将始终打印“Float number”,因为number是float,不管您的输入是2还是2.5(2将存储为2.0)。你知道吗
2
2.5
2.0
如果你打印出浮点数“2.00000000000000001”,你会看到你会得到2.0。这是因为在Python中,不能真正实现浮点精度,如https://docs.python.org/3/tutorial/floatingpoint.html中所述
因此,在条件语句中,舍入2.0将得到2,等于2.0。你知道吗
它仍然是一个浮点,因为如果您输入(number),您将看到它属于一个float类。你知道吗
在浮点运算中,一部分存储位用于指定数字,其余位用于确定功率。我的猜测是,创建数字2000000000001所需的比特数高于可用的比特数。你知道吗
你不是在检查它是
float
,还是integer
,你是在检查number
是否等于round(number)
,而且由于浮点数存储的不精确性,它们对于如此小的差异是相等的。 如果要检查它是integer
还是float
,请尝试以下操作:当然,这将始终打印“Float number”,因为
number
是float
,不管您的输入是2
还是2.5
(2
将存储为2.0
)。你知道吗如果你打印出浮点数“2.00000000000000001”,你会看到你会得到2.0。这是因为在Python中,不能真正实现浮点精度,如https://docs.python.org/3/tutorial/floatingpoint.html中所述
因此,在条件语句中,舍入2.0将得到2,等于2.0。你知道吗
它仍然是一个浮点,因为如果您输入(number),您将看到它属于一个float类。你知道吗
在浮点运算中,一部分存储位用于指定数字,其余位用于确定功率。我的猜测是,创建数字2000000000001所需的比特数高于可用的比特数。你知道吗
相关问题 更多 >
编程相关推荐