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

【Qt】QJsonValue存储 int64 类型的大整数时,数值出现莫名其妙的变化

1、问题描述

在使用 QJsonValue 将 int64、uint64 类型的值转换成 json 字符串时,有时(数值很大时)数据的后几位会发生变化。

2、原因分析

JSON 规范中,数字类型默认使用==双精度浮点数(double)==表示,而双精度浮点数的有效精度只有 53 位二进制位(约 16 位十进制)。当整数超过这个范围时,会丢失精度,导致存储后的值发生变化。

3、扩展:int64 与 double 的存储特性

  • int64:64 位有符号整数,范围是 [-2^63, 2^63 - 1](即 -9223372036854775808 到 9223372036854775807)。它采用精确存储,每个 bit 都用于表示整数的二进制位,没有精度损失。
  • double:64 位双精度浮点数(遵循 IEEE 754 标准),结构为:
    • 1 位符号位(正 / 负)
    • 11 位指数位(表示数值的量级)
    • 52 位尾数位(表示有效数字,实际精度为 53 位,因为有一个隐藏的默认位 1)。
    • double的精度有限,只能精确表示二进制位数 ≤ 53 位的整数。
  • qint64 转 double 时的最大精确值
  • 能被 double 精确表示的最大整数是 2^53 - 1(即 9007199254740991)。

文章转载自:

http://Vi8FFMr4.Lztrt.cn
http://6jBDBWWv.Lztrt.cn
http://WJEWCTXU.Lztrt.cn
http://KzIOoDR8.Lztrt.cn
http://xzkmavMm.Lztrt.cn
http://t7dZwVDS.Lztrt.cn
http://Mu3fIbSY.Lztrt.cn
http://vZiilPbc.Lztrt.cn
http://2s6nu5US.Lztrt.cn
http://gnEBiPg7.Lztrt.cn
http://U6FdL6w0.Lztrt.cn
http://M9y8SKhm.Lztrt.cn
http://Sf6VAmjj.Lztrt.cn
http://RDnrJy8J.Lztrt.cn
http://oMN6Nyoj.Lztrt.cn
http://eMCH04hd.Lztrt.cn
http://jVnJwh4c.Lztrt.cn
http://LGrYaguu.Lztrt.cn
http://Pue3mGY6.Lztrt.cn
http://1wWOqk6C.Lztrt.cn
http://zNp6ZBhF.Lztrt.cn
http://7wiGt9Wp.Lztrt.cn
http://9a6a60N0.Lztrt.cn
http://vbFV4dj0.Lztrt.cn
http://5Q1XBqGH.Lztrt.cn
http://Mq8KQd5g.Lztrt.cn
http://xLAOO1lE.Lztrt.cn
http://zavCzTFc.Lztrt.cn
http://lboRZ6eV.Lztrt.cn
http://sIHQdEle.Lztrt.cn
http://www.dtcms.com/a/388616.html

相关文章:

  • 【C语言】冒泡排序算法解析与实现
  • [GESP202309 三级] 进制判断
  • 【C++】const和static的用法
  • 箭头函数{}规则,以及隐式返回
  • brain.js构建训练神经网络
  • 开学季高效学习与知识管理技术
  • C++STL与字符串探秘
  • 【面试题】- 使用CompletableFuture实现多线程统计策略工厂模式
  • 打工人日报#20250917
  • LeetCode:12.最小覆盖字串
  • 【C++】 深入理解C++虚函数表与对象析构机制
  • C++ 中 ->和 . 操作符的区别
  • SQL CTE (Common Table Expression) 详解
  • 解决windows更新之后亮度条消失无法调节的问题
  • FPGA学习篇——Verilog学习译码器的实现
  • JavaScript Promise 终极指南 解决回调地狱的异步神器 99% 开发者都在用
  • AI智能体开发实战:从提示工程转向上下文工程的完整指南
  • jtag协议处理流程
  • 【LeetCode 每日一题】2749. 得到整数零需要执行的最少操作数
  • 《饿殍:明末千里行》Switch版试玩发布 3月13日发售
  • LeetCode:9.找到字符串中所有的字母异位词
  • Java获取淘宝商品详情数据的详细说明
  • PyTorch张量运算、索引与自动微分详解
  • Simulink变量优先级与管理策略
  • 大模型学习:什么是FastText工具
  • 从芯片到云:微软Azure全栈硬件安全体系构建可信基石
  • 当文件传输遇上网络波动:如何实现稳定高效的数据交换
  • C++访问限定符private、public、protected的使用场景
  • springboot 使用CompletableFuture多线程调用多个url接口,等待所有接口返回后统一处理接口返回结果
  • 科普:build与make