Sta*_*ucK 3 python floating-point precision types floating-accuracy
我需要在Python中存储一个12位精度的float变量
我知道要在float中转换变量有一个浮点函数,但是如何以位为单位指定浮点数的大小?例如(12,16,...)
正如其他答案中所提到的,这在纯python数据类型中并不存在,请参阅文档
但是,您可以使用numpy指定显式数据类型,例如
numpy.float16numpy.float32numpy.float64您还可以使用扩展精度的numpy.float96,这似乎是你所追求的12个字节的96位,例如
import numpy as np
high_prec_array = np.array([1,2,3], dtype=np.float96)
Run Code Online (Sandbox Code Playgroud)
正如评论和链接中所指出的,这不是真正的12字节精度.相反,80位(10字节)填充2个零字节.如果您只关心兼容性,这可能就足够了.
并非所有平台都提供此精度
在下表中,平台?表示该类型可能并非在所有平台上都可用.指出了与不同C或Python类型的兼容性:如果两种类型的数据具有相同的大小并以相同的方式解释,则它们是兼容的.
另请阅读有关使用此类异域类型的警告
我觉得这很有启发性.我得出结论,如果你想绝对保证96bit精度,那么python这不是正确的选择,因为可用扩展精度的固有歧义来自你的C分布的模糊性.鉴于你的物理背景我建议Fortran你使用,如果你想保证稳定性.
对于感兴趣的高级用户,可以定义自己的数据类型.所述numpy上引导用户定义的类型的状态
作为我认为添加数据类型能力的有用应用的一个例子是向NumPy添加任意精度浮点数据类型的可能性.
因此,boost/multiprecision/cpp_bin_float.hpp如果您热切希望保留代码,可以尝试使用python.
| 归档时间: |
|
| 查看次数: |
724 次 |
| 最近记录: |