2147483647 最大存储的数据 现在要存一个 30 亿[3,000,000,000]的数字咋办

2015-01-09 21:15:33 +08:00
 byc8888

php intval(3000000000) 结果为 2147483647 怎么解决

6650 次点击
所在节点    PHP
21 条回复
broadliyn
2015-01-09 21:21:11 +08:00
字符串
matrix32767
2015-01-09 21:23:25 +08:00
字符串,高精度。
liuhaotian
2015-01-09 21:24:56 +08:00
高精度。通过数组实现。为了方便可以一位1w
具体可以百度 c++ 高精度 php改一下就好了
byc8888
2015-01-09 21:28:43 +08:00
找到超过一亿位的梅森素数 奖你十五万美元 刚看的新闻

  据最新一期德国《探索》月刊报道,自从2013年1月美国数学家柯蒂斯?库珀找到迄今人类已知的最大梅森素数2^57885161-1(即2的57885161次方减去1,有17425170位数)以来,全球已有187个国家和地区近60万人使用超过100万台计算机联网来寻找新的更大的梅森素数。凡是第一个找到超过1亿位的梅森素数的个人或机构,将获得国际非营利性组织——电子前沿基金会(EFF)颁发的15万美元奖金。

  梅森素数是指形如2^P-1(其中指数P为素数)的特殊素数;它是以17世纪法国神学家、哲学家和数学家马林?梅森的姓氏来命名的,因为他对这种素数做了大量的研究工作。早在公元前300多年,古希腊数学家欧几里得就用反证法证明了素数有无穷多个,并提出了少量素数可写成2^P-1的形式。由于梅森素数具有许多独特的性质和无穷的魅力,千百年来一直吸引着众多数学家(包括数学大师费马、笛卡尔、莱布尼兹、哥德巴赫、欧拉、高斯、哈代、图灵等)和无数业余数学爱好者对它进行探究。近百年来人们找到的巨大素数几乎都是梅森素数。迄今为止,人类仅找到48个梅森素数;这种素数珍奇而迷人,因此被誉为“数海明珠”。
sumhat
2015-01-09 21:49:48 +08:00
升级 64 位 CPU 和 OS
est
2015-01-09 21:53:09 +08:00
字符串科学计数法。1E30000
omegaga
2015-01-09 21:53:43 +08:00
如果只是到30亿,多用一个int存高于32位的就好了吧,虽然本质上也是高精度(2^31进制),但是好写很多。
没写过php,不过php难道没有无符号整型这种东西的???
ykjsw
2015-01-09 23:17:45 +08:00
bcmath 扩展
lincanbin
2015-01-09 23:22:18 +08:00
function int($s)
{
return($a=preg_replace('/[^\-\d]*(\-?\d*).*/','$1',$s))?$a:'0';
}

var_dump(int(3000000000));

正则大法好!
xmbaozi
2015-01-10 01:07:53 +08:00
linux 64bit无压力。
msg7086
2015-01-10 06:33:44 +08:00
64位?
feiyuanqiu
2015-01-10 09:14:33 +08:00
这不是PHP的问题,去把你数据表字段类型改成 bigint 就行了
feiyuanqiu
2015-01-10 09:17:26 +08:00
...我错了。
直接用字符串存吧,运算的话就 BC_Math 类函数来做就行了
feiyuanqiu
2015-01-10 09:26:51 +08:00
然后再补充一点。
字符串转数字,用这个方法和 intval 的效果是一样的,并且没有溢出问题:

$a = '3000000000' + 0;
JackWindows
2015-01-10 12:40:53 +08:00
没一个人说gmp,我也是醉了
乃们真的用过php么?
zhicheng
2015-01-10 14:09:13 +08:00
我来补刀,叫你不用 Python 。
msg7086
2015-01-10 20:56:12 +08:00
最大的值取决于操作系统。 32 位系统最大带符号的 integer 范围是 -2147483648 到 2147483647。举例,在这样的系统上, intval('1000000000000') 会返回 2147483647。64 位系统上,最大带符号的 integer 值是 9223372036854775807。[1]

[1] http://php.net/manual/zh/function.intval.php
mingyun
2015-01-11 20:59:00 +08:00
@JackWindows gmp还真没用过,请教一下
JackWindows
2015-01-12 01:49:27 +08:00
@msg7086 搜索引擎是个好东西 (言外之意就是不要再做伸手党,随随便便就能找到的东西请RTFM) http://php.net/manual/en/intro.gmp.php
JackWindows
2015-01-12 01:50:14 +08:00
@msg7086 回复错ID了抱歉


@mingyun 请看上一条

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

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

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

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

© 2021 V2EX