首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ODM拯救大数原则

ODM拯救大数原则
EN

Stack Overflow用户
提问于 2016-01-08 22:53:20
回答 1查看 371关注 0票数 3

这可能是个愚蠢的问题,但我很难在mongoDB文档中保存一个大的数字。

基本上,我想保存一个可以大于最大int值的数字。因此,我将文档字段声明为@Field(type="float")

现在的问题是,保存数字会导致错误。我也尝试简单地使用@Integer,但是这个数字减少到了2147483647 (这是32位系统的最大int值)。

所以我尝试了最后一个解决方案,用字符串保存我的号码。这很好(至少在数据库中似乎是正确的),但是返回文档和执行echo $number会让我返回2147483647

有人能解决这个问题吗?我做错什么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-09 05:39:20

最后一件事:这个值被显示为max-int值,因为PHP将它视为数字。您可以看到更多关于这个过程的这里

MongoDB扩展本身确实支持使用MongoInt64的32位系统上的64位整数,但是Doctrine在从mongodb中补水时不以不同的方式处理32位整数或64位整数,因此您将永远不会看到64位值作为MongoInt64类返回,即使PHP可以支持它--它不能:)

因此,我会说,您的选项要么将值强制为字符串(echo (String) $number;),要么尝试解决为什么要将值保存为浮点的错误。在php中存在具有浮动的精确问题,这可能使它无法以这种方式存储数字。

希望这能有所帮助!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34687439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档