You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Protobuf中double/float序列化是否固定大小?用其存经纬度选float可行吗?

Protobuf中double/float的大小特性及经纬度存储选型

一、double和float的序列化大小特性

  • Protobuf 中的 double 和 float 属于固定大小数值类型,无论存储的数值大小如何,序列化后占用的字节数固定:
    • double 始终占用8字节
    • float 始终占用4字节
      这是因为它们严格遵循IEEE 754二进制浮点数标准进行序列化,不会像int32/int64这类类型采用可变长度编码。

二、用float存储经纬度是否合理?

判断合理性核心看业务的精度需求:

  • 单精度float表示经纬度时,绝对误差约为半米级(计算逻辑:float尾数共24位,相对精度约5.96e-8,对应纬度[-90,90]的绝对误差≈5.36e-6度,转换成距离约0.6米)。
  • 若你的场景是普通地图标注、日常位置追踪(如外卖、打车),这个精度完全够用;但如果是高精度测绘、航空航天等对位置精度要求极高的场景,float的精度不足以满足需求,需选用double(double的绝对误差约为2e-8米,可覆盖高精度场景)。
  • 此外,float比double节省一半字节,在海量位置数据存储或频繁传输的场景下,能有效降低存储和带宽开销。

综上:如果业务对位置精度要求在米级以内,选用float完全合理;高精度场景则建议用double。

内容的提问来源于stack exchange,提问作者losingsleeep

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 23:37:12