Name: stC104175 Date: 04/12/2000
java version "1.2.1"
Classic VM (build JDK-1.2.1-A, native threads)
DecimalFormat incorrectly formats BigDecimals.
Here is a small Program:
import java.math.BigDecimal;
import java.text.*;
import java.util.Locale;
public class DecimalFormatTest {
public static void main(String[] args) {
DecimalFormat format =
(DecimalFormat)NumberFormat.getInstance(Locale.GERMANY);
StringBuffer buf = new StringBuffer(30);
format.format(new BigDecimal("9876543210987654321"),buf,new
FieldPosition(0));
// format.format(new BigDecimal("987654321098765432"),buf,new
FieldPosition(0));
// format.format(new BigDecimal("98765432109876543"),buf,new FieldPosition(0));
// format.format(new BigDecimal("9876543210987653"),buf,new FieldPosition(0));
System.out.println(buf);
}
}
Try any of the formattings, each is wrong.
Output first value: 9.876.543.210.987.655.000
Output second value: 987.654.321.098.765.440
Output third value: 98.765.432.109.876.544
Output fourth value: 9.876.543.210.987.652
(Review ID: 103569)
======================================================================
From bug 4330671:
Name: stC104175 Date: 04/14/2000
Java Version JDK 1.2.2
Formatting large double values with java.text.FormatDecimal changes the value
that should be formatted. (see Screenshot).
Formatting is done by
void input_focusLost(FocusEvent e) {
DecimalFormatSymbols symbols = new DecimalFormatSymbols();
DecimalFormat decForm = new DecimalFormat("###,###,###.00", symbols);
output.setText(decForm.format( new Float(input.getText()).floatValue()));
}
if you enter:
'666333999000' the result is
666,334,003,200.00
(Review ID: 103694)
======================================================================
- duplicates
-
JDK-4330671 Bug in formatting large double values with more than.
-
- Closed
-
-
JDK-4018937 API: DecimalFormat formats BigDecimal incorrectly
-
- Resolved
-