php中最大数字的用途&;mysql
php和mysql中数字的最大限制的主要目的是什么?php中最大数字的用途&;mysql,php,mysql,Php,Mysql,php和mysql中数字的最大限制的主要目的是什么? 这是否意味着我们可以/不能处理或存储大于限制的数字 我echoPHP\u INT\u MAX并显示2147483647 我乘以1000000000000000,得到的答案是2.147483647E+30,我认为这已经超出了限制 请告知 非常感谢您的指导 当我考虑验证用户表单输入时,会出现这个问题。我希望确保用户输入符合我们定义的数字格式,而不是其他格式。 然后,我在网上搜索了一些最佳实践,意识到了这个“限制”,但不知道在使用PHP和MYSQL
这是否意味着我们可以/不能处理或存储大于限制的数字 我echo
PHP\u INT\u MAX
并显示2147483647
我乘以1000000000000000
,得到的答案是2.147483647E+30
,我认为这已经超出了限制
请告知
非常感谢您的指导
当我考虑验证用户表单输入时,会出现这个问题。我希望确保用户输入符合我们定义的数字格式,而不是其他格式。然后,我在网上搜索了一些最佳实践,意识到了这个“限制”,但不知道在使用PHP和MYSQL时如何正确处理它。请告知: 步骤1:修剪用户表单输入“字符串编号”并将其转换为数字。
步骤2:验证数字是否为正整数格式。
步骤3:验证数字是否不超过我的“最大限制”。
因为php限制(2147483647)小于mysql限制(18446744073709500000)?我将以php作为我的最大限制。
步骤4:执行一些计算…
步骤5:验证我的结果不超过我的最大限制。
步骤6:将结果存储在mysql中 这是CPU的硬件限制。您仍然可以使用函数处理较大的数字。在mysql中,它是关于对齐字节的,所以它知道哪个偏移量是哪个列
乘法结果将转换为。
PHP\u INT\u MAX
是可在此PHP构建中使用的最大整数的常量(本例中为32位)。如果您的操作系统和CPU支持64位,则可以使用64位PHP构建来支持更大的整数。(如果开发人员围绕64位构建的限制来设计代码,然后在32位构建上使用代码(假设类型很重要),则会出现问题。)
当您将该数字乘以一个较大的数字时,PHP识别出这个新值不适合整数
,并将该类型转换为长
或浮点
。在后一种情况下,您将失去一些精度,因此在考虑代码如何影响变量类型时,一定要小心。在某些语言中,如果试图设置一个大于该类型所允许的值,您将收到一个错误,因为该语言将拒绝为您自动更改该类型。通过这种方式,PHP是一种更基本的编程语言
<?php
$my_number = PHP_INT_MAX;
var_dump(gettype($my_number), $my_number);
$my_number = $my_number * 1000000000000000000000;
var_dump(gettype($my_number), $my_number);
在计算世界中,基于我们使用的计算机硬件的数学模型,存在许多限制
例如,如果我们决定在1位内存中表示一个整数,那么我们将能够表示数字0和1
如果我们将其增加到更常见的值8
、16
、32
或64位
,那么我们可以表示以下数量的不同值:
2^8-256
2^16-65536
2^32-4294967296
- 或
2^64-18446744073709551616
当然,如果我们希望能够表示负数,那么我们可以对整数进行签名(使用一位表示负数或正数)。在32位有符号整数的情况下
允许我们表示数字:−(2^31)
至2^31− 1
或-2147483648
至+2147483647
(上限与问题中的数字相同)
整数可以说是计算机系统中最简单的数字表示形式(除了直接二进制),但由于系统的固有限制,我们通常需要使用其他系统来表示不能用整数表示的较大数字。当超过限制时,PHP将从使用整数切换到使用
您在PHP中看到的限制是在中编译的,这取决于编译器的体系结构。看起来您的PHP编译为32位
您可以阅读更多信息。哪一个数字限制?例如,您的意思是整数变量只能将数字保存到某个值吗?其目的是填充更少的字节。一个无符号的tinyint只有8位长(1字节),它的最大值只有255(11111111),然而我们使用的字节越多,我们使用的内存就越多。这是因为数字通常存储为32位或64位有符号/无符号整数或浮点数,所以它们受到用于存储它们的位数的限制。2.147483647E+30不是整数,所以它不受整数的限制。
Output:
string(7) "integer"
int(2147483647)
string(6) "double"
float(2.147483647E+30)