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

2019-03-31 00:25:19 +08:00
 ahkxhyl

组装无限极层级结构数字溢出 比如 父子级关系 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,好像是溢出了,怎么处理,求教,谢谢

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

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

不过最根本的原因,还是你的设计有问题吧,用一个变量加后缀来表示层级?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/550397

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX