[英]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.