/** * Creates a byte array representation from the specified double value; inspired by Xavier Franc's * Qizx/open processor. * * @param dbl double value to be converted * @return byte array */ public static byte[] token(final double dbl) { final byte[] b = tok(dbl); if (b != null) return b; final double a = Math.abs(dbl); return chopNumber(token(a >= 1e-6 && a < 1e6 ? DD.format(dbl) : SD.format(dbl))); }
/** * Creates a byte array representation from the specified float value. * * @param flt float value to be converted * @return byte array */ public static byte[] token(final float flt) { final byte[] b = tok(flt); if (b != null) return b; // not that brilliant here.. no chance for elegant code either // due to the nifty differences between Java and XQuery for (int i = 0; i < FLT.length; ++i) if (flt == FLT[i]) return FLTSTR[i]; final float a = Math.abs(flt); final boolean small = a >= 1e-6f && a < 1e6f; String s1 = small ? DF.format(flt) : SF.format(flt); final String s2 = Float.toString(flt); if (s2.length() < s1.length() && (!s2.contains("E") || !small)) s1 = s2; return chopNumber(token(s1)); }