mysql里real类型_SQL中数据类型float与real的区别?

展开全部

一、意思不同

FLOAT浮点型数据类型,FLOAT 数据类型用于存储单精度浮点数或双精度浮点数。32313133353236313431303231363533e58685e5aeb931333431373262浮点数使用 IEEE(电气和电子工程师协会)格式。real是不精确的双精度浮点型,float 和 real 数据类型被称为近似的数据类型。

二、字节不同

real型数据的存储大小为4个字节,可精确到小数点后第7位数字。这种数据类型的数据存储范围为从-3.40E+38~-1.18E-38,0和1.18E-38~3.40E+38。

float型的数据存储大小为8个字节,可精确到小数点后第15位数字。这种数据类型的数据存储范围为从-1.79E+308~-2.23E-308,0和2.23E+308~1.79E+308。 FLOAT(size,d) 带有浮动小数点的小数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。

2a1e73500a673cd5a16a16287de4e52d.png

二、写法

float型的数据可写成float[(n)]的形式。其中n是1~15之间的整数值,指定float型数据的精度。当n为1~7时,实际上用户定义了一个real型的数据,系统用4个字节存储;当n为8~15时,系统认为它是个float型的数据,用8个字节存储它。这样既增强了数据定义的灵活性,又节省了空间。

float 和 real 的使用遵循有关近似数值数据类型的 IEEE 754 规范。

### Oracle 中 FLOAT REAL 数据类型的比较 在 Oracle 数据库中,`FLOAT` `REAL` 都属于近似数值数据类型,用于表示浮点数。然而两者之间存在一些差异。 #### 定义精度 - **FLOAT** 是基于 IEEE 754 标准的双精度浮点数,在 Oracle 中实际上是指定为 `BINARY_FLOAT` 的变体形式。当声明 `FLOAT(p)` 时,p 表示二进制位中的有效数字数量(即精度)。如果不指定 p,则默认采用最大可能精度[^1]。 - **REAL** 并不是标准 SQL 类型的一部分;但在某些上下文中,它被当作同义词来指代 `BINARY_FLOAT` 或者更常见的是 `NUMBER(38,0)` 这样的固定精度十进制数。不过需要注意的是,在 Oracle 文档其他资源提到 "real numbers" 通常指的是使用 `BINARY_FLOAT` 实现的单精度浮点数[^2]。 #### 存储空间需求 对于这两种类型来说: - `BINARY_FLOAT` (对应于大多数情况下所说的 `REAL`) 占用 4 字节; - 而未特别限定精度的 `FLOAT` 则会占用 8 字节,提供更高的精确度范围。 因此,默认情况下的 `FLOAT` 提供了更大的值域以及更好的准确性,而 `REAL/BINARY_FLOAT` 更节省内存并适用于那些对性能敏感的应用程序。 #### 使用场景建议 - 如果应用程序需要较高的计算效率并且能够接受一定程度上的舍入误差,可以选择 `REAL(BINARY_FLOAT)` 来减少磁盘 I/O 开销提高处理速度。 - 对于科学计算或其他依赖高精度结果的任务,则应优先考虑使用完整的 `FLOAT` 类型以确保足够的表达能力覆盖所需的有效位数。 ```sql -- 创建表时定义列的数据类型 CREATE TABLE example ( id NUMBER GENERATED BY DEFAULT AS IDENTITY, float_column FLOAT, -- 可选参数 (precision) real_column BINARY_FLOAT -- 等价于 REAL ); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值