java - Mysql float 为何以及如何仅与 Java 一起工作?

标签 java python mysql floating-point

我正在尝试使用不同的语言和不同的数据库客户端执行以下查询。

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/

相关文章:

python - 使用 Python 3 支持构建 OpenCV

python - 按列表中的值过滤 pandas DataFrame

php - MySQL:LAST_INSERT_ID() 出现问题

java - Spring Web Socket Java 客户端

java - 如何处理 Android 按钮 OncClick fragment

java - 为什么 toMillis() 函数在 Java 中返回 -1

java - 在 onActivityResult 中识别 Facebook-Activity

python - 未绑定(bind)本地错误: local variable 'region' referenced before assignment

mysql - zend框架,mysql : How do I Set name utf-8 in application. ini

添加模块后的 Android Studio ClassNotFoundException : com. mysql.jdbc.Driver