⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bytebuffer.java

📁 一个java操作pdf文件的开发包,很好用的.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
     * Outputs a <CODE>double</CODE> into a format suitable for the PDF.     * @param d a double     * @return the <CODE>String</CODE> representation of the <CODE>double</CODE>     */    public static String formatDouble(double d) {        return formatDouble(d, null);    }        /**     * Outputs a <CODE>double</CODE> into a format suitable for the PDF.     * @param d a double     * @return the <CODE>String</CODE> representation of the <CODE>double</CODE> if     * <CODE>d</CODE> is <CODE>null</CODE>. If <CODE>d</CODE> is <B>not</B> <CODE>null</CODE>,     * then the double is appended directly to the buffer and this methods returns <CODE>null</CODE>.     */    public static String formatDouble(double d, ByteBuffer buf) {        boolean negative = false;        if (Math.abs(d) < 0.000015) {            if (buf != null) {                buf.append((byte)ZERO);                return null;            } else {                return "0";            }        }        if (d < 0) {            negative = true;            d = -d;        }        if (d < 1.0) {            d += 0.000005;            if (d >= 1) {                if (negative) {                    if (buf != null) {                        buf.append((byte)'-');                        buf.append((byte)'1');                        return null;                    } else {                        return "-1";                    }                } else {                    if (buf != null) {                        buf.append((byte)'1');                        return null;                    } else {                        return "1";                    }                }            }            if (buf != null) {                int v = (int) (d * 100000);                                if (negative) buf.append((byte)'-');                buf.append((byte)'0');                buf.append((byte)'.');                                buf.append( (byte)(v / 10000 + ZERO) );                if (v % 10000 != 0) {                    buf.append( (byte)((v / 1000) % 10 + ZERO) );                    if (v % 1000 != 0) {                        buf.append( (byte)((v / 100) % 10 + ZERO) );                        if (v % 100 != 0) {                            buf.append((byte)((v / 10) % 10 + ZERO) );                            if (v % 10 != 0) {                                buf.append((byte)((v) % 10 + ZERO) );                            }                        }                    }                }                return null;            } else {                int x = 100000;                int v = (int) (d * x);                                StringBuffer res = new StringBuffer();                if (negative) res.append('-');                res.append("0.");                                while( v < x/10 ) {                    res.append('0');                    x /= 10;                }                res.append(v);                int cut = res.length() - 1;                while (res.charAt(cut) == '0') {                    --cut;                }                res.setLength(cut + 1);                return res.toString();            }        } else if (d <= 32767) {            d += 0.005;            int v = (int) (d * 100);                        if (v < byteCacheSize && byteCache[v] != null) {                if (buf != null) {                    if (negative) buf.append((byte)'-');                    buf.append(byteCache[v]);                    return null;                } else {                    String tmp = PdfEncodings.convertToString(byteCache[v], null);                    if (negative) tmp = "-" + tmp;                    return tmp;                }            }            if (buf != null) {                if (v < byteCacheSize) {                    //create the cachebyte[]                    byte[] cache;                    int size = 0;                    if (v >= 1000000) {                        //the original number is >=10000, we need 5 more bytes                        size += 5;                    } else if (v >= 100000) {                        //the original number is >=1000, we need 4 more bytes                        size += 4;                    } else if (v >= 10000) {                        //the original number is >=100, we need 3 more bytes                        size += 3;                    } else if (v >= 1000) {                        //the original number is >=10, we need 2 more bytes                        size += 2;                    } else if (v >= 100) {                        //the original number is >=1, we need 1 more bytes                        size += 1;                    }                                        //now we must check if we have a decimal number                    if (v % 100 != 0) {                        //yes, do not forget the "."                        size += 2;                    }                    if (v % 10 != 0) {                        size++;                    }                    cache = new byte[size];                    int add = 0;                    if (v >= 1000000) {                        cache[add++] = bytes[(v / 1000000)];                    }                    if (v >= 100000) {                        cache[add++] = bytes[(v / 100000) % 10];                    }                    if (v >= 10000) {                        cache[add++] = bytes[(v / 10000) % 10];                    }                    if (v >= 1000) {                        cache[add++] = bytes[(v / 1000) % 10];                    }                    if (v >= 100) {                        cache[add++] = bytes[(v / 100) % 10];                    }                                        if (v % 100 != 0) {                        cache[add++] = (byte)'.';                        cache[add++] = bytes[(v / 10) % 10];                        if (v % 10 != 0) {                            cache[add++] = bytes[v % 10];                        }                    }                    byteCache[v] = cache;                }                                if (negative) buf.append((byte)'-');                if (v >= 1000000) {                    buf.append( bytes[(v / 1000000)] );                }                if (v >= 100000) {                    buf.append( bytes[(v / 100000) % 10] );                }                if (v >= 10000) {                    buf.append( bytes[(v / 10000) % 10] );                }                if (v >= 1000) {                    buf.append( bytes[(v / 1000) % 10] );                }                if (v >= 100) {                    buf.append( bytes[(v / 100) % 10] );                }                                if (v % 100 != 0) {                    buf.append((byte)'.');                    buf.append( bytes[(v / 10) % 10] );                    if (v % 10 != 0) {                        buf.append( bytes[v % 10] );                    }                }                return null;            } else {                StringBuffer res = new StringBuffer();                if (negative) res.append((char)'-');                if (v >= 1000000) {                    res.append( chars[(v / 1000000)] );                }                if (v >= 100000) {                    res.append( chars[(v / 100000) % 10] );                }                if (v >= 10000) {                    res.append( chars[(v / 10000) % 10] );                }                if (v >= 1000) {                    res.append( chars[(v / 1000) % 10] );                }                if (v >= 100) {                    res.append( chars[(v / 100) % 10] );                }                                if (v % 100 != 0) {                    res.append((char)'.');                    res.append( chars[(v / 10) % 10] );                    if (v % 10 != 0) {                        res.append( chars[v % 10] );                    }                }                return res.toString();            }        } else {            StringBuffer res = new StringBuffer();            if (negative) res.append('-');            d += 0.5;            long v = (long) d;            return res.append(v).toString();        }    }        /**     * Sets the size to zero.     */    public void reset() {        count = 0;    }        /**     * Creates a newly allocated byte array. Its size is the current     * size of this output stream and the valid contents of the buffer     * have been copied into it.     *     * @return  the current contents of this output stream, as a byte array.     */    public byte[] toByteArray() {        byte newbuf[] = new byte[count];        System.arraycopy(buf, 0, newbuf, 0, count);        return newbuf;    }        /**     * Returns the current size of the buffer.     *     * @return the value of the <code>count</code> field, which is the number of valid bytes in this byte buffer.     */    public int size() {        return count;    }        /**     * Converts the buffer's contents into a string, translating bytes into     * characters according to the platform's default character encoding.     *     * @return String translated from the buffer's contents.     */    public String toString() {        return new String(buf, 0, count);    }        /**     * Converts the buffer's contents into a string, translating bytes into     * characters according to the specified character encoding.     *     * @param   enc  a character-encoding name.     * @return String translated from the buffer's contents.     * @throws UnsupportedEncodingException     *         If the named encoding is not supported.     */    public String toString(String enc) throws UnsupportedEncodingException {        return new String(buf, 0, count, enc);    }        /**     * Writes the complete contents of this byte buffer output to     * the specified output stream argument, as if by calling the output     * stream's write method using <code>out.write(buf, 0, count)</code>.     *     * @param      out   the output stream to which to write the data.     * @exception  IOException  if an I/O error occurs.     */    public void writeTo(OutputStream out) throws IOException {        out.write(buf, 0, count);    }    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -