jdk/src/java.base/share/classes/java/util/Formatter.java
changeset 28302 5de69b0d3a84
parent 27731 3cba975130c0
child 28518 9a6247bbed98
child 28765 8878e8455f2a
--- a/jdk/src/java.base/share/classes/java/util/Formatter.java	Wed Jan 07 09:32:41 2015 -0800
+++ b/jdk/src/java.base/share/classes/java/util/Formatter.java	Wed Jan 07 14:15:00 2015 -0800
@@ -3727,29 +3727,29 @@
                             exp = new StringBuilder("+00");
                         }
                     }
-                    return;
-                }
-                long adjusted = -(long) scale + (len - 1);
-                if (form == BigDecimalLayoutForm.DECIMAL_FLOAT) {
+                } else if (form == BigDecimalLayoutForm.DECIMAL_FLOAT) {
                     // count of padding zeros
-                    int pad = scale - len;
-                    if (pad >= 0) {
+
+                    if (scale >= len) {
                         // 0.xxx form
                         mant.append("0.");
                         dot = true;
-                        trailingZeros(mant, pad);
+                        trailingZeros(mant, scale - len);
                         mant.append(coeff);
                     } else {
-                        if (-pad < len) {
+                        if (scale > 0) {
                             // xx.xx form
-                            mant.append(coeff, 0, -pad);
+                            int pad = len - scale;
+                            mant.append(coeff, 0, pad);
                             mant.append('.');
                             dot = true;
-                            mant.append(coeff, -pad, -pad + scale);
-                        } else {
+                            mant.append(coeff, pad, len);
+                        } else { // scale < 0
                             // xx form
                             mant.append(coeff, 0, len);
-                            trailingZeros(mant, -scale);
+                            if (intVal.signum() != 0) {
+                                trailingZeros(mant, -scale);
+                            }
                             this.scale = 0;
                         }
                     }
@@ -3762,6 +3762,7 @@
                         mant.append(coeff, 1, len);
                     }
                     exp = new StringBuilder();
+                    long adjusted = -(long) scale + (len - 1);
                     if (adjusted != 0) {
                         long abs = Math.abs(adjusted);
                         // require sign