SQLAlchemy `Float`、`FLOAT`、`REAL` 之间的区别

MRo*_*lin 5 python sql sqlalchemy

SQLAlchemy 具有三种主要的浮点数类型:FloatFLOATREAL。它们之间的语义差异是什么?是否有任何东西可以跨方言一致地映射到 32 和 64 位浮点数?

swi*_*mer 1

概括

Float是一种 SQLAlchemy 对象类型,包含 SQL 中定义的多个浮点数,例如FLOATREAL

FLOATSQL世界中的区别REAL在于FLOAT存储单精度双精度浮点数,而REAL存储单精度浮点数。


细节

来自撰写本文时的SQLAlchemy 文档:

[ Floatis a] 表示浮点类型的类型,例如FLOATREAL

这里

FLOAT[(n)]

FLOAT数据类型用于存储单精度和双精度浮点数。

单精度浮点数是实数的 32 位近似值。该数字可以为零,或者范围可以从 -3.402E+38 到 -1.175E-37,或者从 1.175E-37 到 3.402E+38。n 的范围是 1 到 24。IBM DB2 内部将单精度FLOAT数据类型表示为REAL数据类型。

双精度浮点数是实数的 64 位近似值。该数字可以为零,或者范围可以从 -1.79769E+308 到 -2.225E-307,或者从 2.225E-307 到 1.79769E+308。n 的范围是 25 到 53。IBM DB2 内部将双精度FLOAT数据类型表示为DOUBLE [PRECISION]数据类型。

如果未指定 n,则默认值为 53。

REAL

单精度浮点数。