Прямо сейчас я пробую это:
int a = round(n);
где n
a double
но это не работает. Что я делаю неправильно?
Какой тип возвращаемого значения метода round ()
во фрагменте кода?
Если это Math .round ()
, он возвращает Long, если входным параметром является Double.
Итак, вам нужно будет привести возвращаемое значение:
int a = (int) Math.round(doubleVar);
Вам действительно нужно опубликовать более полный пример, чтобы мы могли увидеть, что вы пытаетесь сделать. Из того, что вы опубликовали, я вижу вот что. Во-первых, нет встроенного метода round ()
. Вам нужно либо вызвать Math.round (n)
, либо статически импортировать Math.round
, а затем вызвать его, как и у вас.
import java.math.*;
public class TestRound11 {
public static void main(String args[]){
double d = 3.1537;
BigDecimal bd = new BigDecimal(d);
bd = bd.setScale(2,BigDecimal.ROUND_HALF_UP);
// output is 3.15
System.out.println(d + " : " + round(d, 2));
// output is 3.154
System.out.println(d + " : " + round(d, 3));
}
public static double round(double d, int decimalPlace){
// see the Javadoc about why we use a String in the constructor
// http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigDecimal.html#BigDecimal(double)
BigDecimal bd = new BigDecimal(Double.toString(d));
bd = bd.setScale(decimalPlace,BigDecimal.ROUND_HALF_UP);
return bd.doubleValue();
}
}