Ad-hoc patch available on the ticket now:
http://kenai.com/jira/browse/ACTIVERECORD_JDBC-25-Justin
On Tue, Jul 7, 2009 at 2:53 PM, Charles Oliver Nutter
<headius@...> wrote:
On Tue, Jul 7, 2009 at 2:26 PM, Justin Coyne<digger250@...> wrote:
> Okay, here's the real bug. It's not in jdbc at all. It appears to be deeper
> in the guts of jruby.
>
> jruby -e "require 'java'; puts
> JRuby.runtime.newFloat(java.lang.Float.new(5.8)).to_s()"
>
> 5.80000019073486
It looks like the conversion from single-precision float to
double-precision produces this effect.
java.lang.Float.new(5.8)doubleValue produces the same result.
Here's a longer demonstration:
import java.lang.reflect.*;
public class Floaty {
public static void main(String[] args) {
Float f = 5.8f;
System.out.println(f);
System.out.println(f.floatValue());
System.out.println(f.doubleValue());
System.out.println((double)f.floatValue());
System.out.println(new Double(f.floatValue()).doubleValue());
System.out.println((double)5.8f);
System.out.println(new Double(5.8f));
System.out.println(5.8);
System.out.println(new Double(5.8));
System.out.println(new Double("5.8"));
}
}
And the output:
5.8
5.8
5.800000190734863
5.800000190734863
5.800000190734863
5.800000190734863
5.800000190734863
5.8
5.8
5.8
This starts to look like a "WONTFIX" or maybe a "CANTFIX" since it's
Java/JDK/JVM float-conversion behavior at play here. But if we're
getting floats out of the database somewhere in the JDBC adapters,
perhaps we should ask for Double or double instead?
- Charlie
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email