jasonli4
2018-07-13
1814浏览量
数据类型
|
说明
|
|
Blink-SQL
|
||
BOOLEAN(99)
|
BOOLEAN
|
逻辑值 [TRUE|FALSE]
|
BIT VARYING
|
TINYINT
|
1字节微整型 [-128, 127]
|
SMALLINT
|
SMALLINT
|
2字节短整型 [-32768, 32767]
|
INTEGER
|
INT
|
4字节整数 [-2147483648, 2147483647]
|
NUMBER
|
BIGINT
|
8字节长整型 [-9223372036854775808, 9223372036854775807]
|
FLOAT
|
FLOAT
|
4字节浮点型,7-8位小数位
|
DOUBLE PRECISION
|
DOUBLE
|
8字节浮点型,16-17位小数位
|
DECIMAL
|
DECIMAL
|
8或16字节小数型,0~38位小数位
|
DATE
|
DATE
|
日期类型
|
TIME
|
TIME
|
时间类型
|
TIMESTAMP
|
TIMESTAMP
|
时间戳(DATE+TIME)
|
CHARACTER,
CHARACTER VARYING
|
VARCHAR
|
变长字符类型
|
BIT, BIT VARYING
|
VARBINARY
|
变长二进制类型
|
-
|
ANY
|
对象类型
|
说明:ANSI-SQL 数据类型默认是SQL-92类型,99和2003标准类型添加了下标.
|
V = (-1)^s * 2^E * M
| ||
^s
|
表示符号位,当s=0,V为正数;当s=1,V为负数。
|
|
M
|
M表示有效数字, 1≤M<2,也就是说,M可以写成1.xyz的形式,其中xyz表示小数部分。IEEE 754规定,在计算机内部保存M时,默认这个数的第一位总是1,因此可以被舍去,只保存后面的xyz部分。比如保存1.01的时候,只保存01,等到读取的时候,再把第一位的1加上去。这样做的目的,是节省1位有效数字。以32位浮点数为例,留给M只有23位,将第一位的1舍去以后,等于可以保存24位有效数字。
|
|
2^E
|
表示指数位, E为一个无符号整数(unsignedint)这意味着,如果E为8位,它的取值范围为0~255;如果E为11位,它的取值范围为0~2047。但是,我们知道,科学计数法中的E是可以出现负数的,所以IEEE 754规定,E的真实值必须再减去一个中间数,对于8位的E,这个中间数是127;对于11位的E,这个中间数是1023,其实就是上面的E=f(e)。
比如:2^10的E是10,所以保存成32位浮点数时,必须保存成10+127=137,即10001001。读取时候在2^E =2^(e-127)=2^(137-127) = 2^10。
分情况说明:
|
|
示例1
|
十进制的5.0,写成二进制是101.0,相当于1.01×2^2。那么,按照上面V的格式,可以得出s=0,M=1.01,E=2。 十进制的-5.0,写成二进制是-101.0,相当于-1.01×2^2。那么,s=1,M=1.01,E=2。
|
精度类型
|
长度(bit)
|
符号位s(sign)
|
指数位e(exponent)
|
尾数位f(fraction)
|
E=f(e)
|
float 单精度
|
32
|
1
|
8
|
23
|
e-127
|
double 双精度
|
64
|
1
|
11
|
52
|
e-1023
|
CREATE TABLE helloWord_source(
col_int INTEGER
)WITH(
type='random'
) ;
CREATE TABLE helloWord_sink(
col_float FLOAT,
col_double DOUBLE
)WITH(
type = 'print'
) ;
INSERT INTO helloWord_sink
SELECT
cast(0.123456789*2 as FLOAT), // 0.2469136 7位
cast(0.123456789123456789 * 2 as DOUBLE) // 0.24691357824691357 //17位
FROM helloWord_source;
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
一套基于Apache Flink构建的一站式、高性能实时大数据处理平台,广泛适用于流式数据处理、离线数据处理、DataLake计算等场景。