Python 实数和浮点数是一样的吗?

Python 实数和浮点数是一样的吗?,python,types,floating-point,Python,Types,Floating Point,浮点数据类型有时被错误地称为实数(唤起数学实数的联想),在一次编程讲座中,我的教授在他的演讲中将实数视为与浮点数可互换的,我想知道数学实数是否与编程中的实数相同?这让我很困惑 简言之否 每个浮点数都是实数,但并非每个实数都是浮点数,例如,没有等于pi的浮点数 事实上,浮点数与有理数的关系比实数的关系更密切,但将它们视为实数只是一种有用的数学抽象。在编程语言中,数学数字类型通常没有到数据类型的精确映射 在数学中,我们有有理数和无理数(我忽略了复数,因为它们只是有理数和/或无理数对)。整数是有理数的

浮点数据类型有时被错误地称为实数(唤起数学实数的联想),在一次编程讲座中,我的教授在他的演讲中将实数视为与浮点数可互换的,我想知道数学实数是否与编程中的实数相同?这让我很困惑


简言之

每个浮点数都是实数,但并非每个实数都是浮点数,例如,没有等于pi的浮点数


事实上,浮点数与有理数的关系比实数的关系更密切,但将它们视为实数只是一种有用的数学抽象。

在编程语言中,数学数字类型通常没有到数据类型的精确映射

在数学中,我们有有理数和无理数(我忽略了复数,因为它们只是有理数和/或无理数对)。整数是有理数的子集(分子是分母的精确倍数)

计算机有整数作为自然数据类型,一些编程语言有内置的rational类型或用于处理它们的库

然而,无理数(在计算机科学中常被称为“实数”,即使在数学中实数也包括有理数),不能在计算机中精确表示。根据定义,没有有限的数字表示法。因此,任何数字表示都必须是近似值


浮点数是一种高效地表示和计算大范围数字的有效方法。因此,当你有一个需要处理实数的算法时,这通常是一种选择方法。因此,“real”有时被用作“浮点”的同义词。例如,Fortran和PL/I在声明浮点变量时使用关键字
REAL
。但是这个术语已经不受欢迎,大多数其他语言使用更准确的关键字
float
;对于双精度浮点,C还有
double
(在大多数现代语言中,如Python,唯一支持的浮点格式是双精度,但C已经足够老了,默认为单精度)。

当然,有些实数不能用完全精确的浮点表示。从技术上来说,把浮点数看作有理数的子集可能更准确。但在我看来,这不像是一场与采摘的斗争。最后,计算机中的一切都是整数。浮点是实数最接近的近似值。许多实数只能用符号表示法存储在(有限的)内存中。这包括超越数。一些编程语言将其浮点数据类型称为实数(例如Fortran、Eiffel)。实数的数量不可计数,其中有限数量的实数可以表示为浮点数。如果你想近似一个(非整数)实数,浮点数通常是一个不错的选择。我只想将措辞改为“每个浮点数代表一个实数,但不是每个实数都可以表示为浮点数”