codecamp

OceanBase FLOAT 数据类型

FLOAT​ 数据类型是具有精度(precision)的 ​NUMBER​ 数据类型的子类型,需要占 4~40 字节存储空间。它的精度是按二进制有效位数计算的,范围为 1~126,小数位数不可自定义。​FLOAT​ 类型为变长、非精确数值类型。

语法

FLOAT [(p)]

参数

参数

定义

范围

说明

p

精度

1~126

定义数值精度,按二进制有效位数计算,转换为十进制精度要乘以 0.30103。

说明 
  • 二进制精度转换为十进制精度的换算关系: ​十进制精度 = int(二进制精度 x 0.30103)​。
  • 十进制精度转换为二进制精度的换算关系: ​二进制精度 = int(十进制精度 x 3.32193)​。

示例

  • 示例 1: 使用 FLOAT 设置二进制精度为 2,转换为十进制精度 int(2 x 0.30103) = 0.6,结果向下取整,则 FLOAT(2) 的十进制精度为 0。
FLOAT(2)
  • 示例 2:创建 test 表,并向里面插入数据。其中 col1 列是 NUMBER 类型,col2 列是​ FLOAT​ 类型。​NUMBER(5,2)​ 表示十进制精度的定点数,有效位数为 5,结果保留小数点后 2 位。FLOAT(5) 的二进制精度为 5,转换为十进制精度为​int(5 x 0.30103) = 1.50515​,向下取整后十进制精度为 1。如 123.45 用科学计数法表示为 1.2345 x 102,1.2345 小数点后保留 1 位,四舍五入变为 1.2,最后显示为 1.2 x 102 = 120。执行以下语句:
CREATE TABLE test (col1 NUMBER(5,2), col2 FLOAT(5));
INSERT INTO test VALUES (1.23, 1.23);
INSERT INTO test VALUES (7.89, 7.89);
INSERT INTO test VALUES (12.79, 12.79);
INSERT INTO test VALUES (123.45, 123.45);

执行 SELECT 语句查看 test 表,返回结果如下:

obclient> SELECT * FROM test;
+--------+------+
| COL1   | COL2 |
+--------+------+
|   1.23 |  1.2 |
|   7.89 |  7.9 |
|  12.79 |   13 |
| 123.45 |  120 |
+--------+------+
4 rows in set (0.00 sec)
说明 
当转换 ​ANSI FLOAT​ 数据时,您可以使用 OceanBase 数据库内部使用的 ​FLOAT​ 数据类型。但是建议您改用 ​BINARY_FLOAT​ 和 ​BINARY_DOUBLE​ 浮点数字。


OceanBase NUMBER 数据类型
OceanBase 浮点数字
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

OceanBase 控制台指南

OceanBase ODC 使用指南

OceanBase Web 版 ODC

OceanBase 客户端版 ODC

OceanBase Connector/J 开发者指南

OceanBase 什么是OceanBase Connector/J

OceanBase SQL 参考(MySQL 模式)

OceanBase SQL 参考(Oracle 模式)

OceanBase 基本元素

OceanBase 数据库对象

OceanBase 函数

OceanBase 单行函数

OceanBase 返回数字的字符串函数

OceanBase 通用比较函数

OceanBase 编码解码函数

OceanBase SQL 调优指南

OceanBase 相关协议

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }