jhen123 2023-11-06 15:31 采纳率: 100%
浏览 15
已结题

对于c++ json赋值问题

对于json的赋值问题希望帮忙解答

    nextlevel = 1.4;
    user["nextLeveL"] = nextlevel;
    cout << nextlevel << " " << user["nextLeveL"];
//nextlevel是double类型
//userjson::Value类型

输出却是
1.4 1.3999999999999999

  • 写回答

2条回答 默认 最新

  • Leodong. 2023-11-06 15:45
    关注

    该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
    这个问题是由于浮点数精度问题导致的。在计算机中,浮点数是以二进制表示的,有些十进制小数无法精确地用二进制表示,因此会出现精度损失的情况。在这个例子中,nextlevel 的值是 1.4,但在输出时,它被四舍五入成了 1.3999999999999999

    为了解决这个问题,你可以使用 std::setprecisionstd::fixed 来设置输出的小数位数。例如:

    #include <iostream>
    #include <iomanip>
    #include <json/json.h>
    
    int main() {
        double nextlevel = 1.4;
        Json::Value user;
        user["nextLeveL"] = nextlevel;
    
        std::cout << std::fixed << std::setprecision(2) << nextlevel << " " << user["nextLeveL"] << std::endl;
        return 0;
    }
    

    这样输出的结果将会是:

    1.4 1.4
    

    如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月20日
  • 已采纳回答 11月12日
  • 创建了问题 11月6日

悬赏问题

  • ¥15 疾病的获得与年龄是否有关
  • ¥15 关于浏览器控制台js报错问题-swiper.js相关
  • ¥15 opencv.js内存,CPU飙升
  • ¥15 植物重测序snp数据Treemix分析出现问题!
  • ¥15 怎么让当前页面只能有一人在编辑
  • ¥15 UCOSⅢ,3.0.3升级为3.0.4后程序编译成功,但是运行后死在统计任务的地方
  • ¥15 python程序长时间运行卡死,付费求解决方案
  • ¥20 VM打开不了ubuntu虚拟机,如何解决?
  • ¥15 java请求一个返回流式数据的接口,如何将流式数据直接返回前端
  • ¥15 为什么连接不了啊,配置都没问题啊