Chcę zaokrąlić liczbę typu double do powiedzmy dwóch miejsc po przecinku. Mam kod z dwiema funkcjami które mają zwracać zaokrągloną liczbę:
import java.text.DecimalFormat;
public class Main
{
public static void main(String[] args)
{
double d1 = 1776.657;
double d2 = rnd(d1);
System.out.print(d2);
}
static double Round(double d)
{
java.text.NumberFormat nf = java.text.NumberFormat.getInstance();
nf.setMaximumFractionDigits(2);
nf.setMinimumFractionDigits(2);
try
{
return Double.parseDouble((nf.format(d)).replaceAll(",", ".").replaceAll(" ", ""));
}
catch (Exception e)
{
System.out.print("Nie mozna zaokraglic - ");
return d;
}
}
static double rnd(double d)
{
DecimalFormat df = new DecimalFormat();
df.setMinimumFractionDigits(2);
df.setMaximumFractionDigits(2);
Double db = Double.parseDouble(df.format(d));
return db;
}
}
Problem w tym, że funkcje działają częściowo. Jeśli się poda liczbę trzycyfrową przed kropką (a dowolna ilość po niej) np. 354.2353253265, liczba się zaokrągla. Ale jeśli cyfra zaczyna się od czterech cyfr, to wyskakują wyjątki np. 4354.32424. Czemu? :|