Python说浮点数是一个整数

2024-04-24 14:43:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我写了一个程序来检查和打印一个数字是整数还是浮点数,它通常工作得很好。 但是当我尝试2.0000000000000001这样的值时,我得到的消息是它是一个整数,为什么?你知道吗

代码:

import math

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

if number == round(number):
    print("Integer number")
else:
    print("Float number")

Tags: 代码import程序消息numberinputif数字
3条回答

你不是在检查它是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")

当然,这将始终打印“Float number”,因为numberfloat,不管您的输入是2还是2.52将存储为2.0)。你知道吗

如果你打印出浮点数“2.00000000000000001”,你会看到你会得到2.0。这是因为在Python中,不能真正实现浮点精度,如https://docs.python.org/3/tutorial/floatingpoint.html中所述

因此,在条件语句中,舍入2.0将得到2,等于2.0。你知道吗

它仍然是一个浮点,因为如果您输入(number),您将看到它属于一个float类。你知道吗

在浮点运算中,一部分存储位用于指定数字,其余位用于确定功率。我的猜测是,创建数字2000000000001所需的比特数高于可用的比特数。你知道吗

相关问题 更多 >