0

How to I round a number in Java? Like, I have this number 3.4666666666663 and i would like to round it to the nearest floating number, which would be 3.5. I don't want to round it to 4

  • When you say "this number", what is it to begin with? A `float`? A `double`? A `BigDecimal`? – fge Oct 26 '14 at 01:18
  • 4
    I believe your definition of _nearest floating number_ is not universally accepted. – Keppil Oct 26 '14 at 01:19
  • @Keppil basically i want to round the number to the next floating number with 1 number after the ., for example '2.444424' to '2.5', '5.66764' to '5.7' – Matheus Fróes Oct 26 '14 at 01:42
  • You have not answered my question yet; it has a huge impact on the answer you seek – fge Oct 26 '14 at 01:44
  • @fge It's a `double` `double a = (n1 * 4) - 60; Double b = (a * -1) / 6; cp_nota2.setText(b + "");` – Matheus Fróes Oct 26 '14 at 01:54

2 Answers2

3

You have a few options, you might use a DecimalFormat, or a BigDecimal or even a String.format() like

double v = 3.4666666666663;
NumberFormat nf = new DecimalFormat("#.0");
System.out.println(nf.format(v));
MathContext mc = new MathContext(2);
System.out.println(BigDecimal.valueOf(v).round(mc));
System.out.printf("%.1f%n", v);

Output is

3.5
3.5
3.5
Elliott Frisch
  • 198,278
  • 20
  • 158
  • 249
  • Should be mentioned, that the first and the third method use the locale specific decimal seperator. – ifloop Oct 26 '14 at 01:27
-1

Why don't you multiply it by 10, round that up, then divide by 10.

logicOnAbstractions
  • 2,178
  • 4
  • 25
  • 37