在python中模拟单精度浮点的正确方法?

Rya*_*yan 26 python floating-point

在python中模拟单精度浮点的最佳方法是什么?(或者其他浮点格式?)只需使用ctypes?

Ign*_*ams 31

numpy有一种float32类型.


Ale*_*lli 13

如果numpy(其他答案的优秀建议)不适用于您(例如因为您所处的环境不允许任意第三方扩展),Python标准库中的数组模块也可以 - 类型代码'f'为您提供32位浮点数.除了那些和(通常的)双精度浮动之外,"其他浮点格式"并不多 - 你有什么想法?(例如,gmpy提供GMP对具有更长,任意位大小的浮点数的适度支持 - 但它确实是适度的,例如,没有触发功能).


Kug*_*gel 9

标准库中的ctypes.c_float怎么样?


Mar*_*orn 9

可以使用 Python 的struct模块将 64 位浮点数截断为 32 位浮点数的精度。

例如:

>>> x = 1.1122334455667788
>>> x
1.1122334455667788
>>> struct.unpack('f', struct.pack('f', x))[0]
1.1122334003448486
Run Code Online (Sandbox Code Playgroud)

要仅使用 32 位浮点数进行算术运算,您需要将此截断运算应用于每个算术运算的结果。


Joh*_*ooy 5

如果您的应用程序适合数组/矩阵,您可以使用 numpy float32