我在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
所有float
和double
数字均为近似值。
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/