V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ahkxhyl
V2EX  ›  问与答

PHP 组装无限极层级结构数字溢出

  •  
  •   ahkxhyl · 2019-03-31 00:25:19 +08:00 · 1285 次点击
    这是一个创建于 1824 天前的主题,其中的信息可能已经有所发展或是发生改变。

    组装无限极层级结构数字溢出 比如 父子级关系 level=1 tree_code=01 level=2 tree_code=01001 level=3 tree_code=01001001 每一级后面都连接上 001 同级关系 level=2 tree_code=01002 level=2 tree_code=01003 ………… level=3 tree_code=01001002 level=3 tree_code=01001003 …………… 问题: tree_code 同级每次加 1, 我都是用 ++$tree_code 得到的 一直到 level=8 的时候,tree_code 变成一串数字 E+21,好像是溢出了,怎么处理,求教,谢谢

    1 条回复    2019-03-31 01:10:41 +08:00
    lincanbin
        1
    lincanbin  
       2019-03-31 01:10:41 +08:00 via Android
    PHP 中的整数超过常量 PHP_INT_MAX 后会隐式转换为浮点类型,浮点类型会出现精度丢失,详情看 IEEE-754。
    这个就是你这个问题的现象。

    解决方法是用 GMP 或者 BCMath 这种支持大整数的库,或者用字符串模拟大整数,自己做 parse。

    不过最根本的原因,还是你的设计有问题吧,用一个变量加后缀来表示层级?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4676 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 10:03 · PVG 18:03 · LAX 03:03 · JFK 06:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.