diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 2144b2ac84c3b304baceffb2872e1c59be24b7e4..985e84bbb007411fa605113bb587c6997742dbce 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,9 @@
+2001-10-05  Tom Tromey  <tromey@redhat.com>
+
+	* java/text/DecimalFormat.java (format): Use localized minus sign
+	when generating exponent; never use `+'.  Use floor to compute
+	exponent.
+
 2001-10-05  Mark Wielaard  <mark@klomp.org>
 
 	* java/util/zip/Adler32.java: Merge with Classpath
diff --git a/libjava/java/text/DecimalFormat.java b/libjava/java/text/DecimalFormat.java
index edf340027ed4ad3543a57f69b959d6340e94a4bc..a8a3db6d61a66120cc7fc3da296944569d309d34 100644
--- a/libjava/java/text/DecimalFormat.java
+++ b/libjava/java/text/DecimalFormat.java
@@ -442,7 +442,7 @@ public class DecimalFormat extends NumberFormat
 	double baseNumber;
 	if (useExponentialNotation)
 	  {
-	    exponent = (long) (Math.log(number) / Math.log(10));
+	    exponent = (long) Math.floor (Math.log(number) / Math.log(10));
 	    if (minimumIntegerDigits > 0)
 	      exponent -= minimumIntegerDigits - 1;
 	    baseNumber = (long) (number / Math.pow(10.0, exponent));
@@ -523,7 +523,11 @@ public class DecimalFormat extends NumberFormat
 	if (useExponentialNotation)
 	  {
 	    dest.append(symbols.getExponential());
-	    dest.append(exponent < 0 ? '-' : '+');
+	    if (exponent < 0)
+	      {
+		dest.append (symbols.getMinusSign ());
+		exponent = - exponent;
+	      }
 	    index = dest.length();
 	    for (count = 0;
 		 exponent > 0 || count < minExponentDigits;