Python与C类型float、double和long的等价物是什么?
这些C类型的Python等价物是什么: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是没有意义的。当需要
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
模块。您不需要“在大多数平台上”:Pythonfloat
在内部总是存储为Cdouble
(假设我们讨论的是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
换成另一种浮点类型的工具(尽管那会很酷)。