Python 说浮点数是一个整数



我正在编写一个程序来检查和打印一个数字是整数还是浮点数,它通常效果很好。 但是当我尝试一些值,如 2.0000000000000001 时,我得到的消息是一个整数,为什么?

法典:

import math
number = float(input("Enter a number: "))
if number == round(number):
print("Integer number")
else:
print("Float number")

在浮点数中,存储位的一部分用于指定数字,其余位用于确定功率。我的猜测是,创建数字20000000000000001所需的位数高于可用量。

你不是在检查它是float,还是integer,你是在检查number是否等于round(number),并且由于浮点数存储的不精确性,对于如此小的差异,它们将是相等的。 如果要检查它是integer还是float,请尝试以下操作:

number = float(input("Enter a number: "))
if type(number) == int:
print("Integer number")
elif type(number) == float:
print("Float number")

当然,这将始终打印"浮点数",因为number是一个float,无论您的输入是2还是2.5都无关紧要(2将被存储为2.0(。

如果你打印出浮点数"2.0000000000000001",你会看到你会得到2.0。这是因为在 Python 中,您无法真正实现浮动精度,如 https://docs.python.org/3/tutorial/floatingpoint.html 中所述

因此,在您的条件语句中,舍入 2.0 将得到 2,等于 2.0。

它仍然是一个浮点数,因为如果你做 type(number(,你会看到它属于一类浮点数。

最新更新