sql
--表1 score是number(10,5)类型
create table TEST1
(
score number(10,5)
);
--表2 score是binary_double类型
create table TEST2
(
score binary_double
);
--表3 score是binary_float类型
create table TEST3
(
score binary_float
);
实验一:分别往三张表插入 小数点前1位点后14位的数字7.23499999999999
sql
--number(10,5)
insert into test values(7.23499999999999);
--binary_double
insert into test2 values(7.23499999999999);
--binary_float
insert into test3 values(7.23499999999999);
结果如下:
number(10,5) | binary_double | binary_float |
---|---|---|
7.23500 | 7.23499999999999 | 7.23500013 |
实验二:分别往三张表插入 小数点前2位点后14位的数字77.23499999999999
sql
--number(10,5)
insert into test values(77.23499999999999);
--binary_double
insert into test2 values(77.23499999999999);
--binary_float
insert into test3 values(77.23499999999999);
结果如下:
number(10,5) | binary_double | binary_float |
---|---|---|
77.23500 | 77.235 | 77.23500006 |
总结
一、double类型的有效位有15位(小数点前+小数点后),若超过15位则存储到数据库时会四舍五入保存。
验证代码如下:
sql
--binary_double
insert into test2 values(7.23499999999999);
insert into test2 values(77.23499999999999);
insert into test2 values(77.23411111111119);
描述 | 示例数字 | 结果 |
---|---|---|
点前1位,点后14位,共15位 | 7.23499999999999 | 7.23499999999999 |
点前2位,点后14位,共16位 | 77.23499999999999 | 77.235 |
点前2位,点后14位,共16位 | 77.234111111111119 | 77.2341111111112 |