$ jruby -rbigdecimal -e 'puts BigDecimal("9E69999999").to_s("F")' Full thread dump Java HotSpot(TM) Client VM (1.5.0_16-133 mixed mode, sharing): "Low Memory Detector" daemon prio=5 tid=0x01009270 nid=0x81d400 runnable [0x00000000..0x00000000] "CompilerThread0" daemon prio=9 tid=0x01008860 nid=0x81c600 waiting on condition [0x00000000..0xb0e077d8] "Signal Dispatcher" daemon prio=9 tid=0x01008380 nid=0x81b800 waiting on condition [0x00000000..0x00000000] "Finalizer" daemon prio=8 tid=0x01007bd0 nid=0x817000 in Object.wait() [0xb0c05000..0xb0c05d90] at java.lang.Object.wait(Native Method) - waiting on <0x0c820798> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:120) - locked <0x0c820798> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:136) at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159) "Reference Handler" daemon prio=10 tid=0x01007810 nid=0x815800 in Object.wait() [0xb0b04000..0xb0b04d90] at java.lang.Object.wait(Native Method) - waiting on <0x0c820820> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:474) at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116) - locked <0x0c820820> (a java.lang.ref.Reference$Lock) "main" prio=5 tid=0x010016d0 nid=0xb0801000 runnable [0xb07ff000..0xb0800188] at java.math.BigInteger.destructiveMulAdd(BigInteger.java:416) at java.math.BigInteger.(BigInteger.java:376) at java.math.BigDecimal.tenToThe(BigDecimal.java:3121) at java.math.BigDecimal.setScale(BigDecimal.java:2300) at java.math.BigDecimal.setScale(BigDecimal.java:2348) at java.math.BigDecimal.toPlainString(BigDecimal.java:2728) at org.jruby.RubyBigDecimal.floatingPointValue(RubyBigDecimal.java:1321) at org.jruby.RubyBigDecimal.to_s(RubyBigDecimal.java:1391) at org.jruby.RubyBigDecimal$i_method_0_1$RUBYINVOKER$to_s.call(org/jruby/RubyBigDecimal$i_method_0_1$RUBYINVOKER$to_s.gen) at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodN.call(JavaMethod.java:620) at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:164) at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:278) at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:117) at ruby.__dash_e__.__file__(-e:1) at ruby.__dash_e__.load(-e) at org.jruby.Ruby.runScript(Ruby.java:592) at org.jruby.Ruby.runNormally(Ruby.java:514) at org.jruby.Ruby.runFromMain(Ruby.java:360) at org.jruby.Main.run(Main.java:268) at org.jruby.Main.run(Main.java:113) at org.jruby.Main.main(Main.java:97) "VM Thread" prio=9 tid=0x01006f60 nid=0x814a00 runnable "VM Periodic Task Thread" prio=9 tid=0x01009e50 nid=0x805800 waiting on condition "Exception Catcher Thread" prio=10 tid=0x010018b0 nid=0x80ac00 runnable