Python的“float”类型和PostgreSQL的“double precision”类型是否基于相同的C实现?这可能不是真正的潜在问题,但不管怎样,当我试图在两种环境中操纵少量数字时,我得到的结果是:
在Python上(2.7.2 GCC 4.2.1,如果相关):>>> float('1e-310')
1e-310
在PostgreSQL(9.1.1)上:
^{pr2}$
我的理解是Python float类型“处理”1e-310,而PostgreSQL双精度类型不处理。
Python和PostgreSQL文档分别是“float”和“double precision”类型,它们都引用ieee754标准,该标准应该在“大多数平台”上实现(我在OSXLion10.7.3上)。在
有人能解释一下这里发生了什么吗?给我一个解决方案,例如,我想“降低”Python精度,这样我就可以通过Django FloatField在我的数据库中插入浮动。(完整的用例是我从一个文件中读取图形,然后插入它们)。在
一些(也许有趣的)附加信息,在Python中:>>> sys.float_info
sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)
>>> 1e-320.__sizeof__()
24
我真的没有得到第二个。在