处理mysqli中的十进制数

时间:2013-06-05 12:43:03

标签: php floating-point mysqli floating-accuracy floating-point-precision

我必须将一些项目的价格放在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接受哪些数据类型(来自documentation)(可能:为什么)?

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

1 个答案:

答案 0 :(得分:8)

DECIMAL(10,2)表示10是要使用的最大位数。 2指定小数点右侧有两个。所以这意味着左侧有8个数字。见the manual

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

Integer没有小数字符,因此它将覆盖所有数字。 String用于文本而非数字值。 Blob用于二进制大对象,EG:图像