[英]How to update MySQL column = column-number
我有这个mysql专栏:
points_on | points_off
0 1.36
这个SQL命令:
UPDATE table SET points_off = points_off-{$cash}, points_on = points_on+{$cash} WHERE ...
$ cash =“ 1.36”
如果我运行此命令,则表更新如下:
points_on | points_off
1.36 0.0000000143051
如何正确更新?
我需要将$ cash数字从points_off移到points_on。
MySQL字段类型是float
还是double
?
根据http://dev.mysql.com/doc/refman/5.0/en/problems-with-float.html ,问题在于float
值是近似存储的。
您应该使用decimal
,定义为decimal(M,D)
,其中M
是数字中的最大位数(例如,对于0.00到9.99, M = 3
), D
是点后的位数(例如,对于0.00到9.99, D = 2
)。
我执行了与您尝试的相同的操作,遇到了相同的问题,并使用decimal
修复。
请注意,尽管decimal
字段比float
需要更多的存储空间。
declare @cash float
set @cash=1.36
update [dbo].[stkkk] set [pts_on]=[pts_on]+@cash
update [dbo].[stkkk] set [pts_off]=[pts_off]-@cash
我认为这源于PHP内部表示数字的方式。 据我所知,PHP将数字存储为浮点十进制数,这可能会生成奇怪的输出,例如您的输出。
我建议阅读以下StackOverflow文章:
不知道它是否可以100%工作,但是您可能想尝试实现一些代码以确保数学运算精确到两位小数,而不是让PHP自己决定。 被引用的文章可能会有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.