处理mysql中的十进制数字


Handle decimal numbers in mysqli

我必须将一些项目的价格放入mysql表中。当创建表时,我使用DECIMAL(10,2),因为我不需要逗号后面超过2个数字(例如:123,45将被接受作为输入,但123,456将被四舍五入为123,45 PHP)。

第一个问题:使用DECIMAL(10,2),我如何知道逗号前可以存储多少个数字?我知道它不是10,因为10只是Mysql在对这些数字进行数学运算时使用的精度:那么在哪里指定了数字本身的长度?

第二个问题:我使用PHP四舍五入的用户输入,以适应数据类型(浮动与逗号后的2个数字)。我应该如何使用mysqli->bind_param来插入这些数据?我应该使用bind_param接受的这些数据类型(来自文档)中的哪一种(可能的:为什么)?

Character   Description
i   corresponding variable has type integer
d   corresponding variable has type double
s   corresponding variable has type string
b   corresponding variable is a blob and will be sent in packets

DECIMAL(10,2)表示10是要使用的最大位数。2指定小数点右边有两个。这意味着左边还有8数字。参见手册

对于数据类型,您应该使用double,因为这是十进制数。

Integer没有十进制字符,所以它将所有的数字取底。String用于文本而不是数字值。Blob用于二进制大对象,例如:图像