为什么这种奇怪的MYSQL会导致分裂?

为什么这种奇怪的MYSQL会导致分裂?,mysql,Mysql,我有一个SQL查询,如: UPDATE t_example SET column1=column2/column3 where 'SOME CLAUSE' 假设column2的值为7,column3的值为1,则在此语句后column1应设置为值7,但它始终为6而不是7。对于除数为1的任何一对值,结果总是小于1。我没有检查除1以外的值,但为什么会出现这种行为?这可能是浮点不准确。 您的column2可能是一个浮点,column1可能是一个int。如果计算结果为6.99999999,则转换为i

我有一个SQL查询,如:

UPDATE t_example 
SET column1=column2/column3 
where 'SOME CLAUSE'
假设column2的值为7,column3的值为1,则在此语句后column1应设置为值7,但它始终为6而不是7。对于除数为1的任何一对值,结果总是小于1。我没有检查除1以外的值,但为什么会出现这种行为?

这可能是浮点不准确。 您的
column2
可能是一个浮点,
column1
可能是一个
int
。如果计算结果为
6.99999999
,则转换为
int
的结果为
6

如果需要精确的精度,则应使用定点数据类型。

这可能是浮点不准确。 您的
column2
可能是一个浮点,
column1
可能是一个
int
。如果计算结果为
6.99999999
,则转换为
int
的结果为
6

如果您需要精确的精度,那么您应该使用定点数据类型。

尝试MYSQL中的函数,如下所示

N插入t_示例集column1=圆形(column2/column3)

从MYSQL中尝试以下函数

N插入t_示例集column1=圆形(column2/column3)


但两者都是长度为11的
integer
,而
第3列是什么?我无法重现这一点。你能提供一个SQLFIDLE来产生你的问题吗?嘿,检查我的问题编辑。该语句是
update
语句,不是insert<代码>列1
最初保留值0。其他列与前面一样保留7和1。在Fiddle中尝试这个,我似乎无法理解,好吧,我用SQLFiddle完成了,它似乎给出了正确的结果。我不知道我的行为为何如此。但两者都是长度为11的
整数
,而
列3是什么?我无法重现这一点。你能提供一个SQLFIDLE来产生你的问题吗?嘿,检查我的问题编辑。该语句是
update
语句,不是insert<代码>列1
最初保留值0。其他列与前面一样保留7和1。在Fiddle中尝试这个,我似乎无法理解,好吧,我用SQLFiddle完成了,它似乎给出了正确的结果。我不知道为什么我的行为如此。