2016-08-22 31 views
1

我试图用不同的语言和不同的DB客户端执行下面的查询。为什么以及如何Mysql浮动只适用于Java?

SELECT MY_FLOAT_COL*1 FROM MY_TABLE; 

SELECT MY_FLOAT_COL FROM MY_TABLE; 

按我的观察,第一个查询返回结果偏离Python和DB客户,如海蒂SQL,通过this answer作为一个理性的。但是使用JDBC连接的Java代码或数据库客户端(Squirrel)会为上述查询返回相同的结果。 Java有什么神奇的功能,我怎样才能让这种神奇的功能与其他语言/客户端兼容?

**注意:**这实际上是我的另一个子集question。最初的问题使用户无法提供完整的答案。我想要更具体地回答这个问题。

+0

这听起来像它可能更多的驱动程序问题。 – chrylis

+0

驱动程序问题与除Java以外的所有语言..? – Kannan

回答

1

正如你所提到的other question乘以MY_FLOAT_COL*1改变精度等级,因为它被转换为DOUBLE

当您从客户端检索数据时,如果将其视为数字,则将其转换为客户端使用的类型。所以转换发生两次。我想你会转换回float。如果将其作为BigDecimal(或作为String)检索到,则可以看到数据库内部使用的确切表示形式。


注意,Java和Python之间的差是由于float内部表示,是不是在java和在python相同。 python中的float应该类似于java中的double

+0

无论我得到什么类型,我都会得到相同的结果。我不认为这很重要。 – Kannan

+0

尝试发布您的java和python代码。所以我们可以看到差异。 –

相关问题