DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUGĀ·
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=43940>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED ANDĀ·
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=43940





------- Additional Comments From [EMAIL PROTECTED]  2007-11-24 04:31 -------

Performed no timings or comparisons yet, but the result is OK for the mentioned 
cases. 
How about:

    public static void formatDouble(
                            double source, 
                            int decimals, 
                            int precision, 
                            StringBuffer target) {
        
        boolean isPositive = (source >= 0);
        long intPart = (long) (isPositive ? Math.floor(source) : 
Math.ceil(source));
        int scale = (intPart >= 1) ? decimals : precision;
        long fracPart = (long) Math.abs(Math.round((source - intPart) * 
Math.pow(10, scale)));
        
        if (intPart != 0 || fracPart != 0) {
            /* non-zero value */
            if (!isPositive) {
                /* negative value, insert sign */
                target.append('-');
            }
            /* append integer part*/
            target.append(intPart);
            if (fracPart != 0) {
              /* append fractional part */
                target.append('.');
                /* insert leading zeroes */
                while (fracPart < Math.pow(10, --scale)) {
                    target.append('0');
                }
                target.append(fracPart);
                /* remove trailing zeroes */
                for (int i = target.length(); --i >= 0 && target.charAt(i) == 
'0'; ) {
                    target.deleteCharAt(i);
                }
            }
        } else {
            target.append('0');
        }
    }



-- 
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

Reply via email to