Java 与 MySQL : float type difference

标签 java mysql floating-point precision floating-accuracy

我在java中使用 float ,打印它们并将它们存储在MySQL浮点列中。 java打印的结果如下 x=260.1201 y=260.12

没关系,因为 x=y+0.0001 当我尝试将这些值存储在 MySQL 上的两个浮点列中时,我可以在其中读取的值是 x=260.12 y=260.12

为什么会有这样的差异? java的float和MySQL的float不是同一个东西吗?

还有一个问题:在哪个更大的值下,我可以期望使用 java float 正确工作,精度为 0.0001?

最佳答案

您正在突破 32 位 IEEE 754 Wikipedia 的限制浮点精度。它的精度约为 24 位。通常的经验法则是,可用的最小增量值约为您要增量的数字值的 1/10**7。

261.1200 和 261.1201 就 FLOAT 中存储的精度而言是相同的值。这个 SQL Fiddle 证明了这一事实。 http://sqlfiddle.com/#!2/2a521/2/0

所有floatdouble数字均为近似值。

http://dev.mysql.com/doc/refman/5.0/en/problems-with-float.html

http://introcs.cs.princeton.edu/java/91float/

当两个浮点值 == 彼此不相等时,即使您认为它们应该相等,也不会感到惊讶。当他们出现时,总是令人惊讶。

关于Java 与 MySQL : float type difference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18551831/

相关文章:

c# - 可以与 WCF 交互的 Java Web 服务工具包

java - 无法从 KSQL UDF 返回结构

java - hibernate 同步更新

mysql - 如何使用脚本shell执行mysql命令

javascript - 我如何使用php逐行从动态表中获取数据

c++ - 变量分组在优化代码中提供不同的答案

iphone - 你如何从 iphone 上的 sqlite 数据库中读取 float (REAL)?

java - jpos : cannot find control data "0x0D" when using isoMsg. getString(id) 方法

PHP MYSQL 添加多个电子邮件地址到 AddAddress while 循环

javascript - 在javascript中将 float 舍入到下一个整数