运行
sys.getsizeof(float)
不返回任何单个float的大小,它返回float类的大小.该类包含的数据远多于任何单个浮点数,因此返回的大小也会大得多.
如果您只想知道单个浮点数的大小,最简单的方法是简单地实例化一些任意浮点数.例如:
sys.getsizeof(float())
注意
float()
只返回0.0,所以这实际上相当于:
sys.getsizeof(0.0)
这会在你的情况下返回24个字节(也可能对大多数其他人也是如此).在CPython(最常见的Python实现)的情况下,每个float对象都将包含一个引用计数器和一个指向该类型的指针(指向float类的指针),对于64位CPython,每个都是8个字节,或者每个4个字节用于32位CPython.剩下的字节(在你的情况下24- 8 – 8 = 8,很可能是64位CPython)将是用于实际浮点值本身的字节.
但是,对于其他Python实现,这并不能保证以相同的方式工作. language reference说:
These represent machine-level double precision floating point numbers. You are at the mercy of the underlying machine architecture (and C or Java implementation) for the accepted range and handling of overflow. Python does not support single-precision floating point numbers; the savings in processor and memory usage that are usually the reason for using these are dwarfed by the overhead of using objects in Python, so there is no reason to complicate the language with two kinds of floating point numbers.
我不知道任何运行时方法准确地告诉你使用的字节数.但请注意,语言参考上面的引用确实说Python只支持双精度浮点数,所以在大多数情况下(取决于你总是100%正确的重要程度),它应该与C中的双精度相当. .