首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL中的BIGINT会改变我的号码吗?它为什么要这样做?

MySQL中的BIGINT会改变我的号码吗?它为什么要这样做?
EN

Stack Overflow用户
提问于 2012-04-24 09:36:10
回答 2查看 1.2K关注 0票数 3

我会尽量让它变得简单。我在MySQL数据库表上使用BIGINT数据类型。我有一个生成唯一随机数的函数,它的长度可以从12位到13位。

当我在数据库中插入一个长度为12位的数字时,它会很好地输入,

但是当我使用一个13位或更长的值时,它看起来像是四舍五入之类的。下面是

php

代码语言:javascript
复制
$defaultText = 'some string'; //just some string
$web_id = 12;
$element_id = 23112182735363; //case 1 (doesn't work)
//$element_id = 2311218333205; //case 2, does work ()
  mysql_query("INSERT INTO tableName (web_id, element_id, content)
  VALUES ($web_id, $element_id, '".mysql_real_escape_string($defaultText)."')");

结果:在第一种情况下,它插入的数字略有不同,通常由于某种原因而向上舍入。

在第二种情况下,它可以很好地插入数字!也许有人能帮我们解开这个谜团!再次感谢!

最大的int数据类型:

代码语言:javascript
复制
bigint(200) 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-24 09:44:08

从PHP_INT_MAX开始,数字就失去了它们的精度。另请参阅:http://www.php.net/manual/en/reserved.constants.php#constant.php-int-max

在此之后,它们被转换为精度有限的浮点数,并导致奇怪的舍入问题。在PHP中支持BIGINT的唯一方法是使用字符串。

票数 8
EN

Stack Overflow用户

发布于 2015-10-27 01:12:36

我以为你说的是32位服务器。但在我的服务器中,PHP似乎并没有失去精确性。echo(PHP_INT_MAX . "<br/>"); $big_int = -6174803190685607000; echo($big_int . '<br/>');输出9223372036854775807<br/>-6174803190685607000<br/>

遗憾的是,我仍然失去了精确度。我猜可能是因为我在mysqli的prepare语句中使用了'i‘,但我无法证明这一点。

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

https://stackoverflow.com/questions/10290651

复制
相关文章

相似问题

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