Skip to content
📖0 阅读·🤍0 点赞

ES常用数字类型故事版

  • long:64位有符号整数,适用于存储大整数值,比如日期时间戳等。
  • integer:32位有符号整数,通常用于存储普通整数值,适用于一般的整数计数。
  • short:16位有符号整数,适用于需要节省存储空间的场景,比如对内存占用有要求的情况。
  • byte:8位有符号整数,适用于存储小整数值,对存储空间要求较高的场景。
  • double:64位双精度浮点数,适用于需要高精度的浮点数计算,比如科学计算等。
  • float:32位单精度浮点数,适用于需要较高性能和节省存储空间的场景。
  • half_float:16位半精度浮点数,适用于需要更高存储效率和较小存储空间的场景。
  • scaled_float:缩放类型浮点数,适用于需要按比例缩放的场景,可以提高存储效率。
  • unsigned_long:无符号64位整数,适用于需要存储非负整数值的场景,比如计数器等。

咱们来用一个小村庄的故事,把这些数字类型都变成村里的“特色店铺”,这样就好记啦!


故事:数字村的神奇店铺

在数字村里,住着各种各样的数据居民。为了满足大家不同的存储需求(存钱、存东西、存测量结果),村里开了好几家特色店铺,每家店都有自己的“储物柜”规格。

  1. 龙记大仓库 (long) - 64位有符号整数

    • 店主: 龙老板
    • 招牌: “超大空间,有借有还!” (有符号,可存正负)
    • 储物柜: 村里最大的储物柜!整整 64 个格子那么大。
    • 存什么: 专门存放超级巨大的整数宝贝。比如:
      • 时间爷爷的时间戳(记录村里发生的每一件大事的具体时刻,数字超级长)。
      • 宇宙旅行者记录的星球距离(以米为单位,数字巨大)。
    • 特点: 空间巨大,能存下天文数字级别的整数,但占地方也大(耗内存)。正数负数都能存。
  2. 整数杂货铺 (integer) - 32位有符号整数

    • 店主: 阿整
    • 招牌: “日常所需,应有尽有!” (通用整数)
    • 储物柜: 中等大小的储物柜,有 32 个格子
    • 存什么: 存放村里最常用的整数。比如:
      • 面包店记录的每天卖出的面包数量
      • 学校统计的学生人数
      • 你家养的小鸡有几只
    • 特点: 大小适中,最常用!能满足绝大多数日常计数的需求。正数负数都能存。
  3. 省空间小栈 (short) - 16位有符号整数

    • 店主: 小省
    • 招牌: “精打细算,空间为王!” (省内存)
    • 储物柜: 比较小的储物柜,只有 16 个格子
    • 存什么: 存放那些数值不太大,但又想省地方的整数。比如:
      • 诊所记录的病人体温(单位是摄氏度,范围通常在35-42之间)。
      • 运动会上选手的名次(1, 2, 3...)。
      • 一年中的月份(1到12)。
    • 特点: 空间小,省内存!但能存的数字范围也相对小(-32768 到 32767)。正数负数都能存。
  4. 迷你格子间 (byte) - 8位有符号整数

    • 店主: 迷你君
    • 招牌: “极致压缩,寸土必争!” (极度省空间)
    • 储物柜: 最小的储物柜!只有 8 个格子,跟一个火柴盒差不多大。
    • 存什么: 存放非常小的整数,对空间要求极其苛刻的地方。比如:
      • 开关的状态(开=1,关=0)。
      • 表示一周的星期几(1=周一...7=周日)。
      • 一个像素点的灰度等级(0-255)。
    • 特点: 空间超级省!但能存的数字范围最小(-128 到 127)。正数负数都能存。
  5. 精密仪器坊 (double) - 64位双精度浮点数

    • 店主: 双博士
    • 招牌: “毫厘不差,科学首选!” (高精度浮点)
    • 储物柜: 一个超级精密大号天平秤(64位)。它能量得非常非常细。
    • 存什么: 存放需要极高精度的小数。比如:
      • 科学家计算的圆周率π(3.1415926535...)。
      • 卫星定位的精确坐标(纬度/经度,需要很多位小数)。
      • 金融模型的复杂计算结果
    • 特点: 精度最高!能表示非常细微的差别,但计算起来相对慢一点,占空间也大。
  6. 实用量具店 (float) - 32位单精度浮点数

    • 店主: 浮大姐
    • 招牌: “够准够快,经济实惠!” (平衡精度和性能)
    • 储物柜: 一个普通精度中等天平秤(32位)。它能量得比较细,也够快。
    • 存什么: 存放需要一定精度,但又希望速度快、省点空间的小数。比如:
      • 你的身高(比如1.75米)。
      • 一袋米的重量(比如5.5公斤)。
      • 手机游戏的帧率(比如60.0帧每秒)。
    • 特点: 精度和速度的平衡点!比double省空间、计算快,精度也足够很多日常和性能敏感场景使用。
  7. 估摸小摊 (half_float) - 16位半精度浮点数

    • 店主: 半仙儿
    • 招牌: “大概其就行,省地儿第一!” (低精度,省空间)
    • 储物柜: 一个比较粗糙小天平秤(16位)。它能量个大概。
    • 存什么: 存放那些精度要求不高,但空间极其宝贵的小数。比如:
      • 天气预报的大致温度范围(比如“今天大约25度”,存25.2或24.8差别不大)。
      • 神经网络计算中的某些中间值(对最终结果影响不大,可以容忍误差)。
      • 大量传感器数据的粗略平均值
    • 特点: 最省空间!但精度最低,容易有误差。适合对精度不敏感但海量数据的场景。
  8. 比例转换铺 (scaled_float) - 缩放类型浮点数

    • 店主: 缩放师
    • 招牌: “放大缩小,整数存储!” (用整数存放大缩小后的浮点数)
    • 储物柜: 本质上用的是longinteger的储物柜(存整数),但店主有个神奇的缩放镜
    • 怎么存: 比如要存商品价格(12.99元)。缩放师说:“我们按分存吧!” 于是把价格放大100倍(1299分),然后当成整数(1299)存进integer的柜子里。
    • 取用时: 拿出整数1299,再用缩放镜缩小100倍(除以100),就变回12.99元了。
    • 存什么: 存放那些有固定小数位数,或者范围相对固定的浮点数,想利用整数存储的效率和精度。比如:
      • 货币金额(通常精确到分)。
      • 百分比(比如35.5%,放大100倍存为355)。
      • 标准化后的数据
    • 特点: 通过缩放,把小数转换成整数存储,既能保证精度(没有浮点舍入误差),又能节省空间(相比double,但读写时需要做一次缩放计算。
  9. 阳光储蓄所 (unsigned_long) - 无符号64位整数

    • 店主: 阳老板
    • 招牌: “只存光明,拒绝阴暗!” (只存非负数)
    • 储物柜: 和龙老板的仓库一样大(64格),但有个规矩:只接受正数(包括零),绝不接受负数!
    • 存什么: 存放那些永远不会是负数的巨大整数。比如:
      • 网站访问计数器(点击数、浏览数,只会增加不会减少到负)。
      • 自增的唯一ID(用户ID、订单号,从0或1开始一直往上加)。
      • 某些超大容量(如文件大小,不可能是负)。
    • 特点: 空间和long一样大。因为不用存符号了,所以能存的最大正数long能存的最大正数大一倍!但绝对不能存负数。

故事总结:

数字村就像一个数据世界的小缩影。每种数字类型就像一家特色店铺:

  • 要存超大整数(时间戳、大计数),找龙记大仓库 (long)阳光储蓄所 (unsigned_long)(看是否需要负数)。
  • 日常整数(数量、人数),找整数杂货铺 (integer)
  • 小范围整数(温度、名次)且想省空间,找省空间小栈 (short)迷你格子间 (byte)
  • 精密科学计算,找精密仪器坊 (double)
  • 处理日常小数(身高、重量)兼顾性能和空间,找实用量具店 (float)
  • 处理海量且精度要求不高的小数,找估摸小摊 (half_float)
  • 处理有固定比例的小数(钱、百分比)想精确又省空间,找比例转换铺 (scaled_float)