为什么我的长整数变化很小?

时间:2013-06-08 19:02:34

标签: java php sql rounding long-integer

在我的Java servlet中,每次发出某个请求时,我都会生成一个64位整数。然后我向两个方向发送这个:

1)作为对HTTP Get调用者的JSON编码回复

2)通过PHP脚本进入MySQL数据库

1)这样工作:数字被添加到ArrayList(通过Long.toString())。然后通过Gson库将此列表转换为JSON字符串。然后使用HTTP响应的printwriter打印它。

2)运行PHP脚本,并将long参数作为命令行参数传递。然后读取此参数并将其输入SQL INSERT INTO查询。

最后,这两个数字略有不同。在最后一个例子中,我得到以下内容:

1)-753774083758266880

2)-753774083758266887

我错过了什么?

1 个答案:

答案 0 :(得分:0)

这不是答案,但评论时间太长了。

MySQL说bigint支持来自-9223372036854775808的值。

但是,SQLFiddle上的以下代码:

select cast('-753774083758266880' as signed),
       cast('-753774083758266887' as signed),
       cast('-9223372036854775807' as signed)

返回:

-753774083758266900 -753774083758266900 -9223372036854776000

也许对真正大的价值(正面或负面)的支持需要合格。或者,这可能是这些数字在输出中的打印方式,与您的问题无关。

作为一个注释:它确实正确地取了这些值的差异,所以这可能只是一个输出问题。