当前位置: 首页 > news >正文

关于float(b)类型数据类型的精度的学习

Questions: 将表中的某字段类型设计成float(2)后,向其插入数据93.5后,最好结果却变成了90?这是为什么?

关于这个问题 官方帮助文档(Oracle Online Help )的说明如下:

FLOAT(b) specifies a floating-point number with binary precision b. The precision b can range from 1 to 126. To convert from binary to decimal precision, multiply b by 0.30103。

可以看出,float(2)中的2是一个binary precision,而不是我们常用的decimal precision。他们之间的换算关系是:binary precision=int(b*0.30103),因此我们这里实际上的精度应该等于int(2*0.30103)=0,即小数点后精度为0

93.5化成浮点型9.35*10^1,这时9.35小数点后精度为0,成9,因此最后变成9*10^1=90。 

 倘若将字段设计成float(10),那么int(10*0.30103)=3,因此,若插入93.5,就得出9.35–精度为3–>9.3509.350*10^1=93.5。如果插入13884.2,得出1.38842–精度为3–>1.388,1.388*10^4=13880。

SQL> 
SQL> show user;
USER is "SCOTT"
SQL> 
SQL> 
SQL> create table maxwell_float_test2  (a FLOAT(2),3  b FLOAT(10),4  c FLOAT,5  d NUMBER);Table created.SQL> INSERT INTO maxwell_float_test(a,b,c,d)VALUES(93.5,93.5,93.5,93.5);1 row created.SQL> INSERT INTO maxwell_float_test(a,b,c,d) VALUES(93.665,93.665,93.665,93.665);1 row created.SQL> INSERT INTO maxwell_float_test(a,b,c,d) VALUES(96.5,96.5,96.5,96.5);1 row created.SQL> INSERT INTO maxwell_float_test(a,b,c,d) VALUES(13884.2,13884.2,13884.2,13884.2);1 row created.SQL> commit;Commit complete.SQL> select * from maxwell_float_test;A          B          C          D
---------- ---------- ---------- ----------90       93.5       93.5       93.590      93.67     93.665     93.665100       96.5       96.5       96.510000      13880    13884.2    13884.2SQL> set pagesize 200 linesize 200
SQL> desc maxwell_float_test;Name                                                                                                              Null?    Type----------------------------------------------------------------------------------------------------------------- -------- ----------------------------------------------------------------------------A                                                                                                                          FLOAT(2)B                                                                                                                          FLOAT(10)C                                                                                                                          FLOAT(126)D                                                                                                                          NUMBERSQL> col name format a10
SQL> col type format a10
SQL> desc maxwell_float_test;Name                                                                                                              Null?    Type----------------------------------------------------------------------------------------------------------------- -------- ----------------------------------------------------------------------------A                                                                                                                          FLOAT(2)B                                                                                                                          FLOAT(10)C                                                                                                                          FLOAT(126)D                                                                                                                          NUMBERSQL>

请注意注意 float(b)中的b是二进制的精度,进行换算 binary precision=int(b*0.30103)

http://www.lryc.cn/news/15655.html

相关文章:

  • 哪种类型的网络安全风险需要进行渗透测试?
  • ur3+robotiq ft sensor+robotiq 2f 140配置gazebo仿真环境
  • Vue3后台管理系统(四)SVG图标
  • 【收集】2023年顶会accepted papers list(NeurIPS/CVPR/ICML/ICLR/ECCV/AAAI/IJCAI/WWW...)
  • 空闲态LTE到NR重选优先级介绍
  • 数据结构与算法:Map和Set的使用
  • C语言——动态内存管理
  • Docker安装Grafana
  • 数据结构(四):树、二叉树、二叉搜索树
  • 040、动态规划基本技巧(labuladong)
  • html笔记(一)
  • 索引的情况
  • Verilog 学习第五节(串口发送部分)
  • 破解遗留系统快速重构的5步心法(附实例)
  • 信号量(上)实验
  • 阿里5年,一个女工对软件测试的理解
  • 前端练习项目
  • sql复习(set运算符、高级子查询)
  • 整车电源的几种模式:OFF/ACC/RUN/CRANK
  • 踩了大坑:wordpress后台 无法将上传的文件移动至wp-content
  • page cache设计及实现
  • 使用seata来解决分布式事务
  • 推荐一款新的自动化测试框架:DrissionPage
  • MQ系列面试
  • 一句话设计模式2:原型模式
  • c++11特性与c++17特性
  • Redis02: Redis基础命令
  • MDK的HardFault硬件异常和NMI异常原因总结
  • 视频图像质量诊断
  • make、Makefile项目自动化构建工具