Php 固定点类型-“固定点类型”;准确值与否;?
我需要创建一个列,其中可以存储“0.0-99.99”中的值 为什么??由于这种情况: 我的数据库中有以下表格:Php 固定点类型-“固定点类型”;准确值与否;?,php,mysql,decimal,numeric,Php,Mysql,Decimal,Numeric,我需要创建一个列,其中可以存储“0.0-99.99”中的值 为什么??由于这种情况: 我的数据库中有以下表格: "CREATE TABLE dumps( id INT NOT NULL auto_increment, dump_value NUMERIC(5,2), PRIMARY KEY(id), UNIQUE KEY dump_value (dump_value))
"CREATE TABLE dumps(
id INT NOT NULL auto_increment,
dump_value NUMERIC(5,2),
PRIMARY KEY(id),
UNIQUE KEY dump_value (dump_value))";
当我插入值“1.0”时,我在表中得到这个值:“1.00”,这是因为NUMERIC希望它正好是两位数的长yea?
但当我把桌子换成这个:
"CREATE TABLE dumps(
id INT NOT NULL auto_increment,
dump_value NUMERIC(5,1), // <---- CHANGED
PRIMARY KEY(id),
UNIQUE KEY dump_value (dump_value))";
创建表转储(
id INT非空自动增量,
dump_value NUMERIC(5,1),//为什么将“1.0”更改为“1.00”会出现问题。这不会改变计算中的某些内容,您仍然可以将值“00.00”存储到“99.99”。根据您的定义
dump_value NUMERIC(4,2) UNSIGNED
这将定义总共四位的列,小数点后有两位
在您更改的示例中,您将dump_值定义为仅包含小数点后的一位。1.00有什么问题?如果您担心显示目的,请让显示代码处理格式化数字,而不是数据库。存储和显示应以不同的方式处理,它们有不同的目的我需要精确存储由于后面的操作,所以给定的值如何处理?@user2999787您需要对当前格式无法处理的数据执行什么操作?
1+2=3
1.00+2=3
1.000000000000000000000000000000000000000000000000000000000000+2=3
除非我们讨论在屏幕上显示它,否则计算结果是相同的用户。如果我们谈论的是将其显示给用户,那么在数据库级别解决此问题是错误的。因为我以后需要对这些数据做更多的操作,所以您能告诉我如何解决我的问题吗?您好!:)在我看来,我会将数据类型更改为float,并让程序检查插入的值是否只有点后的数字。例如,在php中,在所需的2位之后剪切每个数字的代码是:$desired=((int)($value*100)/100)%100
如果$value是要插入到数据库中的值,则$desired是一个浮点值,只有2位或更少的点(因为括号中的部分),并且在0到99.99的范围内(感谢“%100”部分).我希望我能帮助你回答我的问题,请为我糟糕的英语道歉。对不起,我没有理解你的确切意思:/有人能帮忙吗?问候!格式是数字(5,2)是您想要的格式,只是它不断地从2.0更改为2.00。浮点数据类型几乎相同,但它支持更多的小数位数,因此您的程序必须更改您插入的值,以便数据库中不会出现像1000.9或30.928这样的数字。如果您使用php,我编写的这行代码将检查$value并减少不必要的小数位数,并将$value保持在所需的0到99的范围内。总之,您可以说:将数据类型更改为FLOAT,它不会更改为2.0到2.00,但可以在数据库中插入2.001