OceanBase FLOAT 數(shù)據(jù)類型

2021-06-16 10:37 更新

?FLOAT? 數(shù)據(jù)類型是具有精度(precision)的 ?NUMBER? 數(shù)據(jù)類型的子類型,需要占 4~40 字節(jié)存儲空間。它的精度是按二進制有效位數(shù)計算的,范圍為 1~126,小數(shù)位數(shù)不可自定義。?FLOAT? 類型為變長、非精確數(shù)值類型。

語法

FLOAT [(p)]

參數(shù)

參數(shù)

定義

范圍

說明

p

精度

1~126

定義數(shù)值精度,按二進制有效位數(shù)計算,轉(zhuǎn)換為十進制精度要乘以 0.30103。

說明 
  • 二進制精度轉(zhuǎn)換為十進制精度的換算關系: ?十進制精度 = int(二進制精度 x 0.30103)?。
  • 十進制精度轉(zhuǎn)換為二進制精度的換算關系: ?二進制精度 = int(十進制精度 x 3.32193)?。

示例

  • 示例 1: 使用 FLOAT 設置二進制精度為 2,轉(zhuǎn)換為十進制精度 int(2 x 0.30103) = 0.6,結(jié)果向下取整,則 FLOAT(2) 的十進制精度為 0。
FLOAT(2)
  • 示例 2:創(chuàng)建 test 表,并向里面插入數(shù)據(jù)。其中 col1 列是 NUMBER 類型,col2 列是? FLOAT? 類型。?NUMBER(5,2)? 表示十進制精度的定點數(shù),有效位數(shù)為 5,結(jié)果保留小數(shù)點后 2 位。FLOAT(5) 的二進制精度為 5,轉(zhuǎn)換為十進制精度為?int(5 x 0.30103) = 1.50515?,向下取整后十進制精度為 1。如 123.45 用科學計數(shù)法表示為 1.2345 x 102,1.2345 小數(shù)點后保留 1 位,四舍五入變?yōu)?1.2,最后顯示為 1.2 x 102 = 120。執(zhí)行以下語句:
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);

執(zhí)行 SELECT 語句查看 test 表,返回結(jié)果如下:

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)
說明 
當轉(zhuǎn)換 ?ANSI FLOAT? 數(shù)據(jù)時,您可以使用 OceanBase 數(shù)據(jù)庫內(nèi)部使用的 ?FLOAT? 數(shù)據(jù)類型。但是建議您改用 ?BINARY_FLOAT? 和 ?BINARY_DOUBLE? 浮點數(shù)字。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號