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

使用Google CBORTree库编码Double类型输出与预期不符如何解决

问题根因

你遇到的编码结果不一致问题是Google CBORTree库的CborObject.createFromJavaObject()方法的自动类型推断逻辑导致的:

  • 该方法会对传入的数值做自动优化编码,尝试使用占用空间最小的CBOR类型存储数据,对于浮点值会默认先做32位Float精度适配后再编码为Double,导致低位精度丢失,最终输出和精确Double编码的结果不一致。
  • 你输出的FB-40-60-2A-8F-60-00-00-00就是129.33被截断为Float精度后再转成Double的编码结果,和精确Double值的编码存在差异。

修复方案

不要使用自动类型推断的createFromJavaObject方法,直接显式构造CborDouble对象即可得到精确的Double类型编码:

val cborData = CborDouble(129.33)
val cborBytes = cborData.toCborByteArray()

修改后生成的字节和cbor.me的预期结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:12:03