Python与C类型float、double和long的等价物是什么?

Python与C类型float、double和long的等价物是什么?,python,c,floating-point,double,long-integer,Python,C,Floating Point,Double,Long Integer,这些C类型的Python等价物是什么: float double long 我想用上述三种形式来表示浮点。我相信你指的是类型,而不是函数。在C语言中,double只是一个双精度float(意味着更小的数字表示得更准确)。在Python中,它只是一个浮点。类似地,long只是一个存储较大数字的int 在Python 2中,有int、long和float。但是,当Python在sys.intmax之上增长时,它会自动将int升级为long。这意味着在Python中使用long是没有意义的。当需要

这些C类型的Python等价物是什么:

float
double 
long
我想用上述三种形式来表示浮点。

我相信你指的是类型,而不是函数。在C语言中,
double
只是一个双精度
float
(意味着更小的数字表示得更准确)。在Python中,它只是一个
浮点
。类似地,
long
只是一个存储较大数字的
int

在Python 2中,有
int
long
float
。但是,当Python在
sys.intmax
之上增长时,它会自动将
int
升级为
long
。这意味着在Python中使用
long
是没有意义的。当需要时,它将自动变为
long
float
在内部表示为
double

简单的回答是只使用
int
float
,而不必担心底层实现。Python会为您抽象出这些内容

您可以将
int
转换为
float
(并返回),如下所示:

#!/usr/bin/python

number = 45
real_number = 3.14159265359

number_as_float = float(number)
real_number_as_int = int(real_number)

查看有关标准Python类型的更多信息。

float
double
long
不是函数,它们是类型。而
long
是一种整数类型。如果您想要单精度浮点,您还可以根据需要查看
NumPy
ctypes
模块。您不需要“在大多数平台上”:Python
float
在内部总是存储为C
double
(假设我们讨论的是CPython)。当然,C double的格式取决于平台,但在当前主流平台上,它几乎总是IEEE 754 binary64;sys.float_info.中提供了有关运行程序的计算机的浮点数的精度和内部表示形式的信息,但我会将其从文章中删除,只留下此注释。我担心如果我没有包括“在大多数平台上”,会有人指出这一点;)实际上,我们没有。:-)这一评论可能已经过时。查看CPython源代码,特别是
Include/floatobject.h
,找到
PyFloatObject
结构。您将看到浮动值的
double ob\u fval
字段;这完全是错误的。:-)如果我找到足够的能量,我会提交修复方案
sys.float\u info
也直接基于
DBL\u EPSILON
DBL\u MAX
等宏;源代码中没有内置用于将
double
换成另一种浮点类型的工具(尽管那会很酷)。