SQLAlchemy中`Float`、`FLOAT`、`REAL`的区别
SQLAlchemy有三种主要的浮点数类型,分别是Float
、FLOAT
和REAL
。它们之间有什么语义上的区别呢?在不同的数据库方言中,有没有什么东西可以始终对应到32位和64位的浮点数?
1 个回答
1
总结
Float
是一个 SQLAlchemy 的对象类型,它包含了 SQL 中定义的几种浮点数,比如 FLOAT
或 REAL
。
在 SQL 的世界里,FLOAT
和 REAL
的区别在于,FLOAT
可以存储单精度和双精度的浮点数,而 REAL
只存储单精度的浮点数。
详细信息
根据写作时的 SQLAlchemy 文档:
[
Float
是] 表示浮点类型的类型,比如FLOAT
或REAL
。
根据 这里的内容:
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
单精度浮点数。