SQLAlchemy中`Float`、`FLOAT`、`REAL`的区别

5 投票
1 回答
3585 浏览
提问于 2025-04-18 11:12

SQLAlchemy有三种主要的浮点数类型,分别是FloatFLOATREAL。它们之间有什么语义上的区别呢?在不同的数据库方言中,有没有什么东西可以始终对应到32位和64位的浮点数?

1 个回答

1

总结

Float 是一个 SQLAlchemy 的对象类型,它包含了 SQL 中定义的几种浮点数,比如 FLOATREAL

在 SQL 的世界里,FLOATREAL 的区别在于,FLOAT 可以存储单精度和双精度的浮点数,而 REAL 只存储单精度的浮点数。


详细信息

根据写作时的 SQLAlchemy 文档

[Float 是] 表示浮点类型的类型,比如 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

单精度浮点数。

撰写回答