我正在尝试使用不同的语言和不同的数据库客户端执行以下查询。
SELECT MY_FLOAT_COL*1 FROM MY_TABLE;
SELECT MY_FLOAT_COL FROM MY_TABLE;
根据我的观察,第一个查询在 Python 和 DB 客户端(例如 Heidi SQL)中返回有偏差的结果,正如 this answer 所推理的那样.但是使用 JDBC 连接 (Squirrel) 的 Java 代码或 DB Client 会为上述查询返回相同的结果。 Java 有什么魔力,我怎样才能让其他语言/客户端发挥这种魔力?
**注:**这实际上是我的另一个question的一个子集.最初的问题使用户无法提供完整的答案。我希望这个问题得到更具体的回答。
最佳答案
正如您在 other question 中提到的乘以 MY_FLOAT_COL*1
更改精度级别,因为它已转换为 DOUBLE
。
当您从客户端检索数据时,如果您将其视为数字,则将其转换为客户端使用的类型。所以转换发生了两次。
在 java 中,我假设您将其转换回 float
。如果将其检索为 BigDecimal
(或 String
),您可以看到数据库内部使用的确切表示形式。
请注意,java 和 python 之间的差异是由于 float
的内部表示在 java 和 python 中不同。 python中的float
应该类似于java中的double
关于java - Mysql float 为何以及如何仅与 Java 一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39080345/