zoukankan      html  css  js  c++  java
  • 动手动脑补充

    枚举:enum,实现将所有可能出现的结果都设计好,实际上存储的数据必须是规定好的数据中的一个。
    枚举的使用方式
    定义:enum(可能出现的元素列表); //如enum(‘男’,‘女’)
    使用:存储数据,只能存储上面定义好的数据
     
    创建枚举表
    -- 创建枚举表
    create table my_enum(
    gender enum('男','女','保密')
    )charset utf8;
    插入数据:
    作用之一:规范数据格式,数据只能是规定的数据中的其中一个
    -- 插入数据
    insert into my_enum values('男'),('保密'); -- 有效数据
    -- 错误数据
    insert into my_enum values('male'); -- 错误:没有该元素
    作用之二:节省存储空间(枚举通常有一个别名:单选框),枚举实际存储的是数值,而不是字符串本身
    在mysql中,系统也是自动转换格式的,而且基本与PHP一样(尤其是字符串转数字)
     
    证明字段存储的数据是数值:将数据去除了 +0 就可以判断出原来的数据存储的到底是字符串还是数值,如果是字符串最终结果永远是0,否则是其他值
    -- 将字段结果取出来进行+0运算
    select gender + 0,gender from my_enum;
    找出了枚举元素的实际规律:按照元素出现的顺序,从1开始编号
     
    枚举原理:枚举在进行数据规范的时候(定义的时候),系统会自动建立一个数字与枚举元素的对应关系(关系放到日志中);然后在进行数据插入的时候,系统自动将字符转换成对应的数字存储,然后在进行数据提取的时候,系统就自动将数字转换成字符串显示。
     
    double类型的运算不准确的原因:
    N进制可以理解为:数值×基数的幂,例如我们熟悉的十进制数123.4=1×10²+2×10+3×(10的0次幂)+4×(10的-1次幂);其它进制的也是同理,例如二进制数11.01=1×2+1×(2的0次幂)+0+1×(2的-2次幂)=十进制的3.25。
    double类型的数值占用64bit,即64个二进制数,除去最高位表示正负符号的位,在最低位上一定会与实际数据存在误差(除非实际数据恰好是2的n次方)。

    举个例子来说,比如要用4bit来表示小数3.26,从高到低位依次对应2的1,0,-1,-2次幂,根据最上面的分析,应当在二进制数11.01(对应十进制的3.25)和11.10(对应十进制的3.5)之间选择。
    简单来说就是我们给出的数值,在大多数情况下需要比64bit更多的位数才能准确表示出来(甚至是需要无穷多位),而double类型的数值只有64bit,后面舍去的位数一定会带来误差,无法得到“数学上精确”的结果。
     
  • 相关阅读:
    列表第一篇文档与其他文档不同样式
    当前栏目判断有无子栏目
    当前栏目文章数
    有关当前焦点的标签,只有我能理解
    给推荐一个标识
    附件下载次数
    收藏代码
    关联会员头像信息
    当前三级折叠菜单导航
    centos7 安装配置apache
  • 原文地址:https://www.cnblogs.com/yishaui/p/9752047.html
Copyright © 2011-2022 走看看